- - PR -
[VS2005 ASP.NET C♯]GridViewの動的作成テンプレートのポストバック時の値取得について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-16 14:06
「GridViewにBindする前」とは具体的にどのコントロールの何のイベントハンドラですか? ようするに、ポストバック時もこれが行われているかと、そのタイミング云々が知りたかったんですが↓
取得できないでしょうね。POSTパラメータから直接とるとかなら可能ですが。 #テンプレートを追加した時にコントロールができるわけではないようなのでそこもまた #ネックになってきそうだなぁ | ||||||||
|
投稿日時: 2007-02-16 14:23
>べるさん
返答ありがとうございます。 Templeate作成の記述はPage_Loadで以下のようにやっています。 TemplateField tFieldTest = new TemplateField(); tFieldTest.ItemTemplate = new GridViewTemplate(); gridViewTest.Columns.Add(tFieldTest); ただ、実際の行の中のコントロールの追加はDataBind時に行っているので難しいです。 Bindなしでコントロールを配置できれば問題ないんでしょうが。。。 | ||||||||
|
投稿日時: 2007-02-16 15:06
難しく考えなくていいです。 その DataBinding イベントはいつ呼ばれるのでしょうか? _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2007-02-16 15:18
>囚人さん
度々、返答していただいてありがとうございます。 DataBindingイベントのほうですが、GridViewのほうでOnRowDataBoundのイベント 処理をしていますので、その後に実行されます。OnRowDataBoundイベントではBoundされたデータの有無によってセルの色を変えているだけです。 | ||||||||
|
投稿日時: 2007-02-16 15:26
それで、RowDataBoundイベントはいつ呼ばれるのでしょうか?
要は、そういったデータの設定だとかコントロールの作成だとかが Page_Load の終わりまでに終わっていれば良いだけだと思うのですが。 _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2007-02-16 18:48
>囚人さん
返答ありがとうございます。 RowDataBoundイベントはBindを行ったときに1行バインドするごとに発生します。 今の作りですと、バインドを行わなとテキストボックス(コントロール)が作成されない状況です。 そこで、PostBack時にもデータバインドをしてテンプレートフィールドを作成したのですが、その場合はDBから取得したデータが入ってしまいます。 やはり、今の状況ですとDataBinderのイベント時にテンプレートフィールドを作成するのではなく、バインドとは切り離してテンプレートフィールドを作成する必要があると思います。 いつも言葉足らずですみません。 | ||||||||
|
投稿日時: 2007-02-16 20:10
遠まわしに言っているつもりはないのですが、なかなか伝わらないようですね。すみません。
それは分かっていますが、一体どこでそれを「発生させているか」が大事です。
もう一度言いますが、Page_Load が終わるまでに、データバインド、データコントロールの作成を行ってください。例えば、データソースの設定を Page_Load 内で行えば、RowDataBound が発生し、それは OK となります。 「今の作り〜」の詳しい状況は分かりませんが、とにかく Page_Load までにそれを終わらせれば、その「後」に Post データを取得できます。 「その場合はDBから取得したデータが入ってしまいます。 」はどのタイミングで参照している事を言っていますか? _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2007-02-16 21:58
>囚人さん
返答ありがとうございます。 そして、説明足らずですみません。 データバインド、テンプレート作成はPage_Load内で全て行っています。 これは、PostBack時も同じです。 DBからの取得データが入っているというのは、Page_Loadスタート→TemplateFiled作成→GridViewのDataBind→Control追加→Bind終了→BottunClickイベント発生→GridViewのデータ取得→DBのデータが入っているという状況です。 この場合ですと、RequestFormでデータを再セットすればなんとかうまく動くと思います。 他に何か方法とかあるのでしょうか? また説明が不足してたらすみません。 |