金宏 和實(かねひろ かずみ)

 富山県高岡市 株式会社イーザー副社長。映画「マトリックス」シリーズを見ていると,いつもオブジェクト指向を思い出す。人間がクラスでマトリックス・ワールドにいるのがインスタンス。でも,どっちがどっちかわからなくなる。ネオやトリニティ,モーフィアスなどキャラクタの多くはstaticなクラスで一人だけしか登場しない。それに対し,スミスは通常のクラスだがインスタンスが多すぎる。「マトリックス」シリーズは終わったのか?ネオとトリニティを多重継承した新キャラとか出てこないのだろうか。続きが見たい。


 前回はデータ連結コントロールの基礎と題して,SQL Server2005にデータベースを作成する方法から解説をはじめ,比較的単純なリスト系のデータ連結コントロールを利用しました。Visual Studio 2008ではサーバー・データベースと,ローカル・データベースの2種類を作成することができるのでしたね。今後はデータベースの移動やコピーが簡単なローカル・データベースを使っていくことにします。

 前回の最後にデータソースコントロールの種類と,表形式や階層形式のデータ連結コントロールを紹介しました。今回は,データベースのテーブルを扱うのに適した表形式のデータ連結コントロールを解説していきます。

表形式のデータ連結コントロール

 表の形でデータを表現するデータ連結コントロールには,GridViewやテンプレートを使って表示をコントロールするRepeaterやDataListがあります(図1)。

図1●表の形でデータを表現するデータ連結コントロール
    GridView
  • GridViewはデータベースの複数レコードを表示する
  • レコードを選択,並べ替え,ページング,そして編集することができる
  • GridViewはデータをHTMLテーブルとして表現し,レコードを行として描画する
  • ブール型だけはチェックボックスとして表現する。その他は単純にフィールドの内容を表示する
  • DataBind()メソッドを使ってプログラムによるデータバインディングができる
  • 単一ページで,マスタ/詳細フォームを作成するときに便利に使える
  • GridViewではレコードの追加はできない
    RepeaterとDataList
  • RepeaterとDataListは複数レコードを表示する
  • Repeaterはテンプレートを使用する
  • DataListもテンプレートを使用するが,HTMLテーブル形式で表現する
  • DataListはGridViewと違い,複数レコードを1行に表示できる
  • RepeaterとDataListではイベントの種類が違う
  • レコードを更新するときには,GridViewよりもコードをたくさん書かなくてはならない
    DetailsViewとFormView
  • DetailsViewとFormViewは1レコードを表示する
  • データベースのレコードを表示,編集,追加,削除できる
  • DetailsViewは各々のフィールドをHTMLテーブルの行として扱う
  • DetailsViewはGridViewと同じフィールドをサポートしている
  • FormViewはテンプレートを使って,1レコードを柔軟に表示する
  • FormViewはValidationコントロールが容易に追加できるのでDetailsViewよりも使い勝手が良い
    ListViewとDataPager
  • ListViewとDataPagerは.NET3.5で追加になったデータ連結コントロールである
  • ListViewはGridView,DataList,FormView,Repeaterコントロールの代わりになる
  • DataPagerはListViewコントロールにページングの機能を追加する
  • ListViewはテンプレートを使う
  • ListViewはGridViewの機能に加えて,レコードの追加が可能である
  • ListViewはDataListのように,複数レコードを1行に表示できる

 これらのコントロールはデータベースの複数レコードを取り扱うのに適しています。DetailsViewとFormViewは1レコードを扱います。DetailsViewの機能は単一レコード版のGridViewと言ってもよいほどにGridViewに似ています。

 ListViewは.NET3.5で追加になったコントロールです。従来のデータ連結コントロールのいいとこどりであり,あったらよかったのにという機能を追加しています。GridViewに足りなかったレコードの追加機能をテンプレートで実現しています。ListViewは複数レコードを1行に表示できるので,DataListの新バージョンと考えることもできますし,GridViewのレイアウト機能を拡張したコントロールとも考えることができます。ListView はDataPagerコントロールを使ってページの切り替えをします。

 では,具体的にみていきましょう。