- PR -

DataGridでのVIEWSTATEについて。

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

1

スキルアップ/キャリアアップ(JOB@IT)