2009-04-01 14 views
1

私は、クレジットチェックを検索するための内部Webアプリケーションを作成しています。私はこのWebサイトにASP.NETを使用しています。ポストバックを超えてデータをグリッドビューに保持するにはどうすればよいですか?

私は、信用調査データベースに照会するSQL照会を持っており、結果のデータテーブルを返します。ユーザーが検索をクリックすると、ユーザーが検索ボタンをクリックするたびにクエリが実行され、返されたデータテーブルがGridviewにバインドされます。

これはうまく動作し、それが必要なように私のgridviewに値を設定します。

ポストバックを超えてグリッドビューにバインドされたデータをどのように維持しますか?たとえば、ページングされたグリッドビューの2ページ目をクリックしたとしましょう...そのポストバック中にグリッドビューのデータが失われないようにするにはどうすればよいですか?

は現在、私はセッション[]内のデータテーブルを格納していますが、このテーブルのサイズが非常に大きいので、私は、私がこれを行うべきであるとは思わない(時には、結果の数十万人を!)

ドI各ポストバックのデータベースを再クエリする必要がありますか?クエリにはちょっとしたビットがかかります。もし私がそれを助けることができたら、私はむしろそうしません。

一般的な解決策は何ですか?

答えて

0

いくつかのこと:

  • 「ページ2」をクリックする必要がありません結果ポストバックで - それは、単純なGETリクエストでなければなりません。
  • のGridViewはViewStateでそのデータを保存しないようにしてください:手動でキャッシュデータを、あなたは私がセッションにデータを格納している場合は、各要求
  • 使用ASP.NET MVC
+0

ポストバックがある場合はどうなりますか?ページ区切り以外のことを言ってください。 –

+0

私は、_pagination_がポストバックを使って実装されるべきではないと特に言及しました。一般に、すべてのナビゲーションはPOSTや何かではなく、GETリクエストの観点から実装されるべきです。 –

+0

私はそれが非常に問題だと言います。 – Ruslan

1

上のデータソースを「再バインド」 viewstateがオフになっていることを確認し、ポストバックごとに再バインドしているので、少なくとも2つの場所にすべてのデータを格納しないようにします。

また、viewstateをオンのままにして、セッションデータを取得して一度に1ページ分のデータを戻すロジックを変更することも考えられます。現在のページを取り込み、そのページのデータを返すだけで、すべてのデータを最初に取得してセッションに格納できるようになります。次に、そのページビュー中に他のポストバックアクションが発生した場合、グリッドで何も実際に何も起こっていなかった場合は、毎回リバインドする必要はありません。

グリッドに表示されるデータが多すぎるために私が過去に実行した問題の大部分は、より多くの設計上の問題であり、解決を図ろうとしていた全体的な問題を見ています。多くのデータを表示する必要がないように別のソリューションを実装します。通常、顧客/ユーザーは、要求の代替案や影響を考慮しないため、すべてを尋ねます。

関連する問題