如何访问列表视图的layouttemplate中的控件?
时间:2020-03-05 18:49:01 来源:igfitidea点击:
我如何在后台代码的ListView
的LayoutTemplate
中设置用户控件的属性?
<asp:ListView ...> <LayoutTemplate> <myprefix:MyControl id="myControl" ... /> </LayoutTemplate> ... </asp:ListView>
我想做这个:
myControl.SomeProperty = somevalue;
请注意,我的控件不在" ItemTemplate"中,而是在" LayoutTemplate"中,因此并非所有项目都存在,它仅存在一次。因此,我应该能够访问一次,而不是针对每个数据绑定项。
解决方案
回答
在每个ListViewItem上使用FindControl方法。
var control = (MyControl)Item.FindControl("yourControlId");
回答
要设置LayoutTemplate内部控件的属性,只需在ListView控件上使用FindControl方法。
var control = (MyControl)myListView.FindControl("myControlId");
回答
这已在以下堆栈溢出问题中得到解答:
访问ListView的LayoutTemplate内部的控件
请参阅tanathos对已接受答案的评论。
我知道这个问题是一年多以前提出来的,但这是我以前在这里找到的搜索字词的第一个结果,因此我想将答案留给偶然发现它的任何人。
回答
布局被创建,并触发一个LayoutCreated事件,该事件表明该布局已在系统中创建。
然后,我们可以使用listview.FindControl获得对该控件的引用。
回答
var control = (MyControl)myListView.FindControl("myControlId");
这将起作用,但请确保在数据绑定之后创建,否则将不会创建LayoutTemplate,从而引发错误。