BoundFieldとTemplateFieldについて
課題
DBから抽出したデータをGridViewで表示し、更新・削除・追加機能を実装することになった。 DBから抽出するデータは動的であるのでGridViewの表示もタグではなく、コード側で対応することになった。
それはそれとして、調べてみると表示・削除・更新ならBoundFieldで事足りるけれど追加も実装するならTemplateFieldを使うらしい。
BoundFieldとTemplateFieldは一体何が違うのだろう。
調査
MSDNを眺める。
データ バインド コントロールにテキストとして表示するフィールドを表します。
データ バインド コントロールにカスタムの内容を表示するフィールドを表します。
BoundFieldは基本はテキスト表示、対してTemplateFieldは自分で表示内容を決めるようだ。TemplateFieldならテキストボックスに表示しようがラジオボタンで表示しようが自由。
もすこし眺めると、BoundFieldはレコードデータやHeader・Footerについてスタイル設定しかできない。TemplateFieldはレコードデータはもちろん、Header・Footerだって自由に表示内容を決められるってことがわかった。それを活かすことでFooterに追加ボタンとテキストボックスなんかを配置してレコード追加機能を実装できるってことか。
評価
基本的な表示や特にコダワリのない更新処理・削除処理ならBoundFieldで十分。
追加処理を実装したい時や、更新時にコンボボックスやラジオボタングループなどなど表示にコダワリたいときはTemplateFieldの出番。
というのが私の理解です。