<%# PageProperty %>
我正在尝试在列表视图的 LayoutTemplate 中使用数据绑定表达式(例如 )。
我看过的资源:
访问 ListView 的 LayoutTemplate 中的控件
将代码隐藏中的公共字符串获取到 ListView 的 LayoutTemplate
http://forums.asp.net/p/1201992/3319344.aspx
http://www.codeproject.com/Articles/42962/Databind-Expression-in-ListView-LayoutTemplate
我可以使用以下两种方法成功地使数据绑定表达式在初始数据绑定上工作:
protected void lvwExample_OnLayoutCreated(object sender, EventArgs e) {
lvwExample.Controls[0].DataBind();
}
和
protected void lvwExample_OnLayoutCreated(object sender, EventArgs e) {
ListView lv = lvwExample ;
Control template = new Control();
lv.LayoutTemplate.InstantiateIn(template);
template.DataBind(); // resolve the problem
// remove current layout (without databind expressions)
lv.Controls.RemoveAt(0);
//add again the layout but with databound content
lv.Controls.Add(template);
}
问题是,当列表视图listView.DataBind()
在回发中被反弹()时,数据绑定表达式会从布局模板中丢失。以前的数据绑定表达式现在是模板中的静态文本。
当为列表视图禁用视图状态时它工作正常,但在这种情况下需要视图状态来维护分页和排序(我相信这些视图状态是必需的,但我还没有真正研究它,可能处于控制状态)。
我该怎么做才能让它工作?