by WebSurfer
2010年10月30日 14:34
先のポスト DataPager のバグその1 に続いて、再び DataPager のバグの話です。なお、このバグも .NET 4 では修正されており、.NET 3.5 のみの問題です。
ListView の中に配置した DataPager の設定にある条件が重なると Stack Overflow を起こします。条件というのは以下の 5 つです。
-
ListView の LayoutTemplate の中に DataPager を配置
-
ListView に EmptyDataTemplate を配置
-
ListView にバインドされるデータの件数が 0
-
DataPager.QueryStringField を設定(例: QueryStringField="pageNumber")
-
そのページを、クエリ文字列 ?pageNumber=1 として要求
残念ながら原因は分かりません。(涙)
でも、回避策は簡単で、DataPager を ListView の外に出してしまえばいいのです。件数 0 の場合は ListView の外に DataPager を配置しても、それが表示されることはないです。
または、当然ながら、DataPager.QueryStringField の設定を止めても回避できます。DataPager.QueryStringField を使う理由が、GridView.PageIndex プロパティのようにコードでページを指定したいということであれば、別の手段があります。
その「別の手段」の具体的な方法は、Resetting the Page Index in a ListView が参考になると思います。