質問

フレームワーク2.0を使用していますが、ポストバックを実行した後、データグリッドとデータセットがどのように機能するか理解できません。 msdnでは、リクエストがポストバックの場合、再度データバインドを行う必要はないと述べています。しかし、私の質問は、データバインドがない場合にデータグリッドがどのようにレコードを再び表示するかということです。 asp.netはクエリ結果をキャッシュに保存すると思いますが、よくわかりません。 .NETがそれを達成するために使用するメカニズムを教えてください。

50件のレコードごとにページ分割された大きなクエリ結果(数百)があり、ユーザーが次の50件のレコードを選択するたびに同じクエリを実行するのを避けたい。

事前に感謝します。

役に立ちましたか?

解決

ASP.NETは以前の値をViewStateに保存するため、ポストバック間で失われることはありません。

しかし、あなたの場合、あなたはページネーション、新しいレコードについて話している。最初のリクエストでそれらを取得する場合は、ビューステートに保存することもできますが、それは良い考えではありません。レコードが多い場合、ページの配信は非常に遅くなります。

クライアントが毎回同じデータを取得し、データの表示中に現在のデータの変更が重要でない場合は、 asp.netのキャッシュメカニズム

他のヒント

これに対する答えは、ビューステートです。表示されたグリッド全体がビューステートに保存され、これがポストバック間で持続します。

つまり、グリッドは最初のページの読み込み時に定義され、ビューステートに保存されます。ユーザーがリンク/ボタンをクリックしてフォームをポストバックすると、ビューステートがデコードされ、再び使用できるようになります。したがって、グリッドを再バインドする必要はありません。しかし、注意すべきいくつかの警告があると述べました。

Viewstate は魔法の言葉:P

ASP.NET WebFormsは、すべて ViewState についてです。

基本的には、ASP.NETはページ上の非表示の入力要素に情報を保存し、ポストバックを使用して自動的にサーバー側で情報を取得し、フォームを(サイト全体にラップして)サーバーにポストバックします。 / p>

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