12

如何从代码隐藏中设置用户控件ListView的属性?LayoutTemplate

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

我想做这个:

myControl.SomeProperty = somevalue;

请注意,我的控件不在 中ItemTemplate,而是在 中LayoutTemplate,因此并非所有项目都存在,它只存在一次。所以我应该能够访问它一次,而不是每个数据绑定项。

4

6 回答 6

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

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

于 2010-10-13T17:13:15.507 回答
12

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

var control = (MyControl)myListView.FindControl("myControlId");
于 2009-08-22T10:53:40.647 回答
1

对每个 ListViewItem使用FindControl方法。

var control = (MyControl)Item.FindControl("yourControlId");
于 2008-09-07T18:14:01.823 回答
1

这个堆栈溢出问题已经回答了这个问题:
访问 ListView 的 LayoutTemplate 中的控件

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

我知道这是一年多前提出的问题,但这是我曾经在这里找到的搜索词的第一个结果之一,所以我想把答案留给其他偶然发现它的人。

于 2009-11-25T04:09:35.290 回答
0

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

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

于 2009-12-26T16:26:52.153 回答
0

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

Dim control = CType(myListView.FindControl("myControlId"), MyControl)
于 2018-10-20T05:04:52.837 回答