<%# 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()
) されると、データバインディング式がレイアウト テンプレートから失われることです。以前はデータバインディング式であったものは、テンプレート内の静的テキストになりました。
リストビューでviewstateが無効になっている場合は正常に機能しますが、この場合、ページングとソートを維持するためにviewstateが必要です(これらにはviewstateが必要だと思いますが、実際には調べていません。制御状態である可能性があります)。
これを機能させるにはどうすればよいですか?