とりあえず半歩

学んだことを1日1個、簡単なことでも良いから記録していきたい。

ViewStateの復元タイミング

課題

BoundFieldとTemplateFieldについて - とりあえず半歩

以前、上のような調査をしてて、その続きでTemplateFieldを使ったGridViewを動的に生成しようとしている。

行おうとした動的生成の手順を簡単にまとめると、

  1. ButtonのClickイベントで表示するデータをDataTableへ取得.そして表示.(①)
  2. DataTableをSessionに保存.
  3. SessionのkeyをViewStateに保存.
  4. Page_InitにてViewStateからSessionのKeyを得て、SessionからDataTableを得る.それを使って表示.(②)

①はClick後に表示する用の処理。②はポストバック時にも表示され続ける用の処理。
(この処理も何だか格好悪いよなあと感じるのだけれど、他に良い方法が思いつかない。ご教示いただければ幸いです)

この手順を行おうとすると、手順4でViewStateが得られないことがわかった。どうやらページのライフサイクルによるもののようだ。そこでページのライフサイクルを調べる。

調査

もう少し調べるとViewStateを読み込むLoadViewStateイベントというものがあるようなのだが、上記サイトだといまいちどこでこのイベントが呼ばれるのかはっきりしない。たぶんくま.NETさんのサイトを見るとLoadイベント付近のよう。

Initイベントの段階ではViewStateがまた読み込まれていないことは確かなのだが、それを示す資料が見つからない。引き続き資料を探す、もしくは自分で実験しようと思う。