ASP.NETデータセットとメモリ
-
05-07-2019 - |
質問
フレームワーク2.0を使用していますが、ポストバックを実行した後、データグリッドとデータセットがどのように機能するか理解できません。 msdnでは、リクエストがポストバックの場合、再度データバインドを行う必要はないと述べています。しかし、私の質問は、データバインドがない場合にデータグリッドがどのようにレコードを再び表示するかということです。 asp.netはクエリ結果をキャッシュに保存すると思いますが、よくわかりません。 .NETがそれを達成するために使用するメカニズムを教えてください。
50件のレコードごとにページ分割された大きなクエリ結果(数百)があり、ユーザーが次の50件のレコードを選択するたびに同じクエリを実行するのを避けたい。
事前に感謝します。
解決
ASP.NETは以前の値をViewStateに保存するため、ポストバック間で失われることはありません。
しかし、あなたの場合、あなたはページネーション、新しいレコードについて話している。最初のリクエストでそれらを取得する場合は、ビューステートに保存することもできますが、それは良い考えではありません。レコードが多い場合、ページの配信は非常に遅くなります。
クライアントが毎回同じデータを取得し、データの表示中に現在のデータの変更が重要でない場合は、 asp.netのキャッシュメカニズム。
他のヒント
これに対する答えは、ビューステートです。表示されたグリッド全体がビューステートに保存され、これがポストバック間で持続します。
つまり、グリッドは最初のページの読み込み時に定義され、ビューステートに保存されます。ユーザーがリンク/ボタンをクリックしてフォームをポストバックすると、ビューステートがデコードされ、再び使用できるようになります。したがって、グリッドを再バインドする必要はありません。しかし、注意すべきいくつかの警告があると述べました。
Viewstate は魔法の言葉:P
ASP.NET WebFormsは、すべて ViewState についてです。
基本的には、ASP.NETはページ上の非表示の入力要素に情報を保存し、ポストバックを使用して自動的にサーバー側で情報を取得し、フォームを(サイト全体にラップして)サーバーにポストバックします。 / p>