代码之家  ›  专栏  ›  技术社区  ›  Younes

访问同一页上其他Web控件中的标签

  •  1
  • Younes  · 技术社区  · 14 年前

    我正在使用一个子布局(SiteCore),并且有一个占位符,当前包含2个Web控件。我要从一个WebControl访问另一个WebControl的标签。 我必须递归地找到标签吗,或者我可以用另一种方式访问标签吗? 我尝试了不同的方法,比如:

    此.page.findcontrol 此.parent.findcontrol 等。。

    Label lblSearchTerm = (Label)this.Parent.FindControl("lblSearchTerm");
    Label lblResults = (Label)this.Parent.FindControl("lblResults");
    

    不会给我任何标签lblsearchterm=null的结果。 我希望这里有人知道解决这个问题的方法。

    2 回复  |  直到 11 年前
        1
  •  1
  •   Bartłomiej Mucha    11 年前

    为什么不使用this.page.findcontrol? 当然,这个搜索不是递归执行的。 但是你可以使用你能找到的代码 here .

        2
  •  4
  •   maltem-za    14 年前

    我不熟悉SiteCore,但是如果我正确理解您的问题,那么您的标签就是其中一个WebControls的子控件。如果这是真的,那么要找到那些标签,您需要先找到它们的父级(即WebControl)。

    假设以下控制层次结构:

    Page
    > WebControl1
       > Label
    > WebControl2
       > Label
       > Button
    

    如果您试图从WebControl1访问WebControl2上的标签,则

    Label lblSearchTerm = (Label)this.Parent.FindControl("lblSearchTerm");
    

    将不起作用,因为这样。父级将返回页对象,而您要查找的标签不是页的子级。相反,它是“WebControl2”的子级,而“WebControl2”本身是页面的子级。因此,类似下面的内容应该有效:

    Label lblSearchTerm = (Label)this.Parent.FindControl("WebControl2").FindControl("lblSearchTerm");
    

    实际上,如果标签的所有者是唯一修改它的人,那就更好了,但这完全是另一个讨论。