在同一页面上访问另一个Web控件中的标签

时间:2010-08-17 09:30:40

标签: c# .net asp.net label sitecore

我正在使用一个Sublayout(Sitecore)并拥有一个placeHolder,目前拥有2个webcontrols。我想从一个Webcontrol访问Label到另一个Webcontrol。 我是否必须递归地找到Label,或者我可以通过其他方式访问Label? 我尝试了不同的方法,如:

this.Page.Findcontrol this.Parent.Findcontrol 等。

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

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

2 个答案:

答案 0 :(得分:4)

我不熟悉Sitecore,但如果我理解你的问题,那么你的标签就是其中一个网络控件的子控件。如果这是真的,那么要找到那些标签,你需要先找到他们的父母(即:webcontrol)。

假设以下控制层次结构:

Page
> WebControl1
   > Label
> WebControl2
   > Label
   > Button

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

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

将不起作用,因为this.Parent将返回Page对象,并且您要查找的标签不是Page的子级。相反,它是'WebControl2'的子节点,它本身就是Page的子节点。所以类似下面的内容应该有效:

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

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

答案 1 :(得分:1)

为什么不使用this.Page.FindControl? 当然这个没有递归地执行搜索。 但是,您可以使用here上可以找到的代码。