• 締切済み

GridViewのコントロールを変更したい

お知恵を貸してください。 データが1件もなくても、見出しを見せるために データ行の1行目をヘッダーとして扱っています。 また、表示したい列が可変長のため、 デザイン側では、TemplateField等を指定せずに、 RowDataBoundイベントにて、一部の項目を テキスト、ボタン、リンクに変更しました。 この状態でボタンを押したら、 変更したテキスト、ボタン、リンクが消えてしまったので、 RowCreatedイベントでコントロールを作る処理をいれたのですが、 直接バインドするデータがなかった最後の列については、 e.Row.Cells.Addで実現できたのですが、 バインドしている項目については、 e.Row.Cells[0].Controls.Add(テキスト)としてみたのですが、 RowDataBoundイベントで、RowCreatedで作ったはずのIDが FindControlで取得できません。 実行時にバインドされるコントロールを変えることはできないのでしょうか?

みんなの回答

  • onos
  • ベストアンサー率81% (127/155)
回答No.1

RowDataBoundイベントとRowCreatedイベントってどっち先に発生するんでしたっけ? Dataをバインドしようとして行が作成されるような気もするんですが。。。 あと、処理のタイミングとしてGridViewのPreRenderを検討してみてはどうでしょう。 このタイミングだとデータのバインド等が終了し、HTMLを生成(レンダリング)する直前なので見え方等を変えるには一番よいのではないかと思います。

kurocky
質問者

お礼

回答ありがとうございます。 RowDataBoundの前にRowCreatedが走っています。 急遽別作業が発生してしまい、まだPreRenderを試していませんが、 やってみます。

kurocky
質問者

補足

PreRenderで試してみました。 ボタンを押す前に入力した値が、押した後には消えてしまいました。 可変の列ですが、上限があるようなので、 デザインで作成しておき、地道に隠すしかないのでしょうか。

関連するQ&A

専門家に質問してみよう