連載:Visual Studio 2005でいってみようDBプログラミング

第4回 テンプレート機能でGridViewコントロールも自由自在

山田 祥寛(http://www.wings.msn.to/
2006/05/31
Page1 Page2 Page3

 前回のサンプルでは、GridViewコントロールのImageField/HyperLinkFieldなどのフィールド列を利用して、データベースから取り出した値を基に画像列やハイパーリンク列を生成してみました。これらXxxxxFieldフィールドを利用するだけでも、自在にカスタマイズを施せるのがGridViewコントロールのうれしいところです。

 本稿ではさらに踏み込んで、前回扱わなかったTemplateFieldフィールドを利用してみたいと思います。TemplateFieldフィールドを利用することで、GridViewコントロール上のカラムを自在にカスタマイズすることが可能になります。

今回作成するサンプル・プログラムのダウンロード(vs2005db_04.zip)

グリッド上の入力コントロールをカスタマイズしよう

 GridViewコントロールでデフォルトの編集機能を利用する場合、各カラムの値はTextBoxコントロールの値として表示されます。例えば、以下のようにです。


図1 GridViewコントロールの標準の編集モード

 しかし、標準で用意されたTextBoxコントロールは、多くの場合、データの内容に比べて「幅が狭い(あるいは広い)」ためデータを入力しにくい、グリッド表全体の幅が必要以上に広くなってしまうといった問題があります。また、本サンプル・プログラムの「出版社」列のように、特定の選択肢のみから値を選択させたいような場合には、そもそもTextBoxコントロールではなくDropDownListコントロールを使用したい、というケースもあるでしょう。

 はたまた、エンドユーザーからの入力値に基づいてデータの登録や更新を行う場合、入力値の正否を検証する機能は欠かせません。さらには削除時に確認ダイアログを表示したいという要望もあるかもしれません。このような場合にも、TemplateFieldフィールドを利用することで、カラムの内容/機能やレイアウトを自在に変更することが可能になります。

 本節では、TemplateFieldフィールドを利用して前回のサンプル・プログラムを改変し、より使いやすい入力フォームを作成してみましょう。





図2 TemplateFieldフィールドによってカスタマイズされた編集列
TemplateFieldフィールドを利用することで、新たに検証コントロールを配置したり、入力コントロールをTextBox以外のものに置き換えたりできる。
  入力データに誤りがあった場合にはエラーを表示。
  [削除]ボタンをクリックした場合は確認ダイアログを表示。

 本節で変更する内容は、以下のとおりです。

  • 「単価」列/「刊行日」列のテキストボックス幅を調整する
  • 「出版社」列の入力要素をTextBoxからDropDownListに置き換える
  • 以下の入力チェック機能を実装する

    1. 「単価」列が入力されているか(必須検証)
    2. 「単価」列の値が整数値で、かつ、0〜100000の範囲に収まっているか(範囲検証)
    3. 「刊行日」列の値が日付データであるか(データ型検証)

  • 削除時に処理確認のダイアログ・ボックスを表示する

 なお、本節のコードを動作させるには、あらかじめ以下の表のような「publishテーブル」を作成しておく必要があります。新規にテーブルを作成する方法については、第2回の内容を参照してください。また、以降の作業を行うに先立って、既存のbooksテーブルに対応するように出版社情報を入力しておいてください。

列名 データ型 内容
name VARCHAR(50) 出版社名(主キー)
postnum CHAR(8) 郵便番号
address VARCHAR(100) 所在地
表1 publishテーブルの構造

 INDEX
  Visual Studio 2005でいってみようDBプログラミング
  第4回 テンプレート機能でGridViewコントロールも自由自在
  1.グリッド上の入力コントロールをカスタマイズしよう
    2.TemplateFieldフィールドを適用する
    3.TemplateFieldフィールド適用のポイントを理解する
 
インデックス・ページヘ  「Visual Studio 2005でいってみようDBプログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間