- - PR -
DataGridでのVIEWSTATEについて。
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-09-10 10:01
いつも勉強させて頂いております。
基本的な事なのですが、ASP.NETでDataGridを使い、 かつ(カスタム)ページングを実装した場合、 出来上がったWebページを右クリックして「ソースの表示」で 確認すると、<input type="hidden" name="__VIEWSTATE" value=…で DataGridに表示されているデータの内容らしきものが大量に表示されます。 これは無駄だと思って、VIEWSTATEを無効にすると 今度はページングが上手く機能しません。 DataGridに表示されている内容をVIEWSTATEに保持せずに ページング機能を実現出来るやり方はあるのでしょうか?? |
|
投稿日時: 2003-09-10 12:30
ASP.NETのオブジェクトは、ブラウザにHTMLを送信すると、一回毎に破棄されます。
このため、一度取り出したDataSetの内容を保持しておくには、 ・ViewStateを使う(デフォルト) ・Sessionオブジェクトを使う ・一回毎にDataSetを取り出し直す といったような処理が必要になります。 自動でやってくれるViewStateを利用したくないのであれば、Sessionオブジェクト を利用して自分でDataSetを復元してあげるようなプログラムを記述する必要が あるかと思います。 |
|
投稿日時: 2003-09-11 13:27
早速のご回答有り難うございました。
基本的にはページを切り替えるタイミングで、再度SQL-Serverの ストアドプロシージャを動かして指定ページに表示する内容を DBから再取得しています。 DataGridに表示された内容についてはViewStateに保持しておいても ページを切り替えた後は使い道が無い(DBから再取得している為)ので…。 |
|
投稿日時: 2003-09-11 13:45
度々済みません。
因みに、DataGridのプロパティのページング部分ですが、 “ページングを許可”,“カスタム ページングを許可”, “ページ サイズは20行”,“移動ボタンのモードはページ番号”に設定してあります。 EnableViewStateをFalseにすると、初回のみDataGridは表示されますが、 ページ番号をクリックして任意のページに飛ぶと、DataGridは表示されなくなります。 また、ページ初回表示時のみDataGridのVirtualItemCountにストアドプロシージャから 取得した該当データ総件数をセットし、 後はDataGridのPageIndexChangedでDBから再取得したレコードを DataGridにバインドしております。 |
1
