4

次のようなオブジェクトのコレクションにデータバインドしている ListView があります。

int total;
List<Client> clientList = 
    clientData.GetClients(criteria, pageNum, pageSize, out total);
uxClientList.DataSource = clientList;
uxClientList.DataBind();

pageNum、pageSize、および total パラメータは、データ アクセス層でのページングを容易にします。ここまでは順調ですね。

これで、ページに DataPager をスローし、それを ListView に向けて、まともなページング UX を得ることができます。データ ソース コントロールを使用して宣言的にではなくプログラムでバインドする場合は、もう少し作業が必要ですが、ここでの問題は、DataPager が結果セット全体が毎回取得されることを期待していることです。そこからページネーションを計算する必要があるため、結果の 1 ページが利用可能なレコードの合計として返され、利用可能な結果が 1 ページしかないかのようにレンダリングされます。つまり、GetClients の非ページング バージョンに切り替えると、上記のシナリオは DataPager で正常に機能します。

List<Client> clientList = clientData.GetClients(criteria);
uxClientList.DataSource = clientList;
uxClientList.DataBind();

明らかに、データ アクセス レイヤーは、一度に 1 ページを取得する方法を提供してくれるので、毎回すべてのレコードを取得するよりも、これが望ましいでしょう。使用可能なレコードの合計を DataPager に明示的に通知できれば、ページネーション出力を自動的に作成できますが、一度に 1 ページしか必要としません。

これを行う簡単な方法が見つからず、検索で何も見つかりませんでした。確かに、私は現在 DataPager の実装について深く理解しているわけではないので、見落としがあることを願っています。

4

2 に答える 2

4

ListViewPagedDataSource とそのAllowServerPagingプロパティを見てください。それがあなたが探しているものかもしれません..

于 2009-01-10T00:01:24.780 に答える
2

あなたは何も見落としていません。

大きな結果セットを扱うときは、ページングをオフにして、独自のページング コントロールを追加する必要があります。

私の経験では << < > >> で十分です。とにかく誰も3ページを超えません。

于 2009-01-09T23:52:43.283 に答える