2008-09-07 66 views
12

如何从代码隐藏中设置ListViewLayoutTemplate中的用户控件属性?如何访问listview的layouttemplate中的控件?

<asp:ListView ...> 
<LayoutTemplate> 
<myprefix:MyControl id="myControl" ... /> 
</LayoutTemplate> 
... 
</asp:ListView> 

我想这样做:

myControl.SomeProperty = somevalue; 

请注意,我的控制是不是在ItemTemplate,它是在LayoutTemplate,所以它并不适用于所有项目的存在,只存在一次。所以我应该可以访问一次,而不是每个数据绑定的项目。

回答

12

要设置LayoutTemplate中控件的属性,只需使用ListView控件上的FindControl方法。

var control = (MyControl)myListView.FindControl("myControlId"); 
1

在每个ListViewItem上使用FindControl方法。

var control = (MyControl)Item.FindControl("yourControlId"); 
0

布局被创建,并触发布局已在系统中创建的LayoutCreated事件。

然后,你可以使用listview.FindControl来获得对该控件的引用。

18
var control = (MyControl)myListView.FindControl("myControlId"); 

这将工作,但确保在数据绑定之后执行此操作,否则将不会创建LayoutTemplate,从而引发错误。