グリッドビューを使用して大量のデータを表示しています。
データ ソースはセッションに保存されるため、SQL サーバーに追加で移動することなくグリッドビューをページング/ソートできます。
データをセッションに保存せずにグリッドをページング/ソートするより良い方法はありますか?
グリッドビューを使用して大量のデータを表示しています。
データ ソースはセッションに保存されるため、SQL サーバーに追加で移動することなくグリッドビューをページング/ソートできます。
データをセッションに保存せずにグリッドをページング/ソートするより良い方法はありますか?
それはすべて、使用しているデータの量に依存すると思います。数百行で作業している場合は、jQuery プラグインDataTablesを確認することをお勧めします。コードの観点からは、通常のテーブルを作成してから、document.Ready イベントで DataTables スクリプトを適用します。ページング、並べ替え、およびフィルタリングがあります。それはかなり強力です。
1,000 行以上を扱う場合は、サーバー側でページングと並べ替えを行うことをお勧めします。この場合、ユーザーがページを表示すると、データベースに再度アクセスし、特定の時点で表示されている行数のみを返します。したがって、1 ページに 50 レコードのみを表示する場合、クエリは 50 レコードのみを返す必要があります。この方法は少しトリッキーですが、ユーザーにとっては高速であり、最大ページ サイズに達するリスクもありません。
私の経験では、ObjectDataSource を使用することをお勧めします。これは、セッションを乱雑にすることなく、リフレクションの大きなデータ ブロックを動的に処理できるためです。使用できる追加機能: 選択、挿入、および削除。
テーブル全体をセッションに格納して SQL サーバーへのアクセスを回避したい場合、1 つの方法として、データの独自のページング/並べ替えを行い、結果の 1 ページ分のアイテムを List<> に配置してからデータを入力する方法があります。そのリストを持つ DataGrid。
独自のページ バック/ページ フォワード コントロールを実装する必要がありますが、これはそれほど難しくありません。これらのコントロールは、進む/戻るボタンをクリックするたびに、メモリ内テーブル全体から新しいページに相当する表示可能なデータでリストを埋めます。
利点は、DataGrid コントロールが必要以上に表示しようとすることなく、表示されるデータのページを完全に制御できることです。
ただし、セッションでキャッシュしているデータが古くならないようにしてください。つまり、最後に SQL サーバーからテーブルを取得してから、変更または削除された古いデータ項目が表示されていないか、新しく挿入された項目が表示されていません。(画面が再表示されるたびにではなく) 数分ごとにデータベースからデータを更新するように、何らかのタイムアウトが適切な場合があります。
ページャー ボタンに基づいて、プログラムで行を表示および非表示にすることができます。データセットをページ サイズのブロックにグループ化します。1 つのブロックを非表示にして、表示したいブロックを表示すると、もう 1 つのブロックがその場所に表示されます。これはすべてクライアント側で行うことができます。