如何访问listview的layouttemplate中的控件?

时间:2008-09-07 17:54:49

标签: asp.net listview

如何从代码隐藏中为ListView的{​​{1}}设置用户控件的属性?

LayoutTemplate

我想这样做:

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

请注意我的控件不在myControl.SomeProperty = somevalue; ,它在ItemTemplate,因此它不存在于所有项目中,只存在一次。所以我应该能够访问一次,而不是每个数据绑定项。

6 个答案:

答案 0 :(得分:18)

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

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

答案 1 :(得分:12)

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

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

答案 2 :(得分:1)

在每个ListViewItem上使用FindControl方法。

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

答案 3 :(得分:1)

这已在Stack Overflow问题中得到解答:
Access a control inside a the LayoutTemplate of a ListView

请参阅tanathos对已接受答案的评论。

我知道这是在一年前被问到的,但这是我过去常常访问的搜索词的第一个结果之一,所以我想留下任何偶然发现它的人的答案。

答案 4 :(得分:0)

创建布局,并触发LayoutCreated事件,该事件表示已在系统中创建布局。

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

答案 5 :(得分:0)

如果您需要VB.net版本,则为:

Dim control = CType(myListView.FindControl("myControlId"), MyControl)