各リクエストですべての行を取得せずにDataPagerを使用する

StackOverflow https://stackoverflow.com/questions/429707

  •  06-07-2019
  •  | 
  •  

質問

次のようなオブジェクトのコレクションにデータバインドしている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ページしかないようにレンダリングされます。言い換えると、GetClientsの非ページングバージョンに切り替えると、上記のシナリオはDataPagerで正常に機能します。

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

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

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

役に立ちましたか?

解決

何も見落としていません。

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

私の経験では<!> lt; <!> lt; <!> lt; <!> gt; <!> gt; <!> gt;十分ですとにかく誰も3ページ目を通過しません。

他のヒント

ListViewPagedDataSourceとその AllowServerPaging プロパティ、おそらくが探しているものだと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top