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

12

我该如何从代码后台设置ListViewLayoutTemplate中用户控件的属性?

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

我想要做这个:

myControl.SomeProperty = somevalue;
请注意,我的控件不在 ItemTemplate 中,而是在 LayoutTemplate 中,因此它并不存在于所有项中,它仅存在一次。因此我应该只能访问它一次,而不是对于每个数据绑定项都能访问到它。
6个回答

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

这个方法可以使用,但确保在数据绑定之后执行该方法,否则LayoutTemplate将没有被创建,从而导致错误。


12

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

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

1

在每个ListViewItem上使用FindControl方法。

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

1

这个问题已经在 Stack Overflow 上得到了回答:
访问 ListView 的 LayoutTemplate 中的控件

请查看 tanathos 给出的被接受答案的评论。

我知道这个问题已经超过一年了,但它是我用来找到这里的搜索词的前几个结果之一,所以我想为其他遇到同样问题的人留下答案。


0

如果您需要VB.net版本,这里是:

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

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接