2009-07-09 20 views
1

グリッドビューを使用して、各レコードのチェックボックスをクリックしてそのレコードを(データを編集した後に)保存し、ユーザーがそのレコードを選択できるようにすることができます彼らが望むように記録し、すべてをすぐに保存してください。ASP.net GridViewのViewStates

コードの後ろに、私はループビューを実行し、レコードを保存するチェックボックスを探します。私は、Gridviewのビューの状態を無効にする場合。私はそれをループすることはできませんが、私はグリッドビューのビューステートを有効にした場合、グリッドビュービューの状態は1MB以上になることがあります。

このガードビューコントロールのviewstateを減らすための最良の方法は何ですか、私のアプローチは間違っていますか?

+1

は、あなたは、おそらくどのようにして、あなたのGridViewを使用している方法の例を投稿することができますあなたはそれにバインドしていますo? – RichardOD

答えて

1

あなたのビューステートのサイズを減らすことができない場合は、別の解決策を試すことができます。ビューステートをサーバーに格納することができます。私は巨大なビューステートを持っていたページに次のような何かを実装しました、それは素晴らしい仕事

Reducing the page size by storing ViewState on Server

:このブログの記事は、これを実装する方法を示しています。私はviewstateを最適化しようとする前に、このような何かに移動する前にオーバーヘッドのビットを作成しています。

私は(それはしばらくしている)この記事を使用して、これはファイルシステムを使用してSQLのためにそれを修正しなければならなかったと思う: Persisting View State to the File System

0

私はアレックスに同意します。また、データを保持する一時テーブルを使用することもできます。私はプロジェクトでこのシナリオを使用し、それは正常に動作します。キャッシュを使用することもできますが、もう一度、Webサーバーに負荷をかけることになります(分散キャッシュを使用していない限り)。

1

あなたが考えているのであれば、カスタムページングを実装して、返されるレコードの数を減らすことを検討してください。おそらく、デフォルトのページングから始めますが、それはすべてのレコードを返します。パフォーマンスを向上させたい場合は、カスタムページングが必要です。

いくつかの有用な材料:

  1. Efficiently Paging Through Large Amounts of Data

  2. GridView ObjectDataSource LINQ Paging and Sorting

  3. Improve GridView Performance by Delegating Paging to SQL Server