■データコントロールとは

 

ASP.NETには、データ連動型のWebページを作成するためのコントロールとして、RepeaterDataListDataGridが用意されています。これらのコントロールは、データベースのテーブルなどを表示するためのものでデータコントロールと呼びます。

 

Repeaterは、図1の「買い物かご」のような複雑な表を表示するのに適しています。この「買い物かご」は、Repeaterのヘッダーテンプレート、アイテムテンプレート、フッターテンプレートから構成されています。ヘッダーテンプレートでは、表の列見出しを表示しています。アイテムテンプレートでは、データ連結式を使用して「買い物かご」のテーブル(DataTable)をバインドしています。フッターテンプレートでは、「小計」、「送料」、「合計」を計算してデータ連結式を使用してバインドしています。

 

DataListは、図2のようにデータベースのレコードを複数列で表示するときに使用します(RepeaterDataGridは、レコードを複数列で表示することができません)。DataListに書籍を2列で表示するには、RepeatColumnsプロパティに「2」を設定します。RepeatDirectionプロパティには、横方向(Horizontal)、または縦方向(Vertical)のいずれかを設定します。RepeatLayoutプロパティには、「Table」を設定します。RepeatLayoutに「Flow」を設定すると、RepeatColumnsが無効になります。RepeatLayoutに「Table」を設定すると、HTML<table>を使用して表を作成します。「Flow」を設定すると、HTML<span>を使用しますので、表形式で表示することはできません。書籍のデータは、DataListのアイテムテンプレートにデータ連結式を記述して表示します。書籍の表紙は、HTML<img>を使用して表示します。

 

DataGridは、図3のようにデータベースを表形式で表示するのに向いています。このDataGridは、テンプレート列、連結列、ボタン列から構成されています。テンプレート列は、表紙のイメージと書籍の概要/著者/定価を表示します。連結列は書名を表示します。ボタン列は、買い物かごに[入れる]ボタンを表示します。DataGridには、この他にハイパーリンク列、編集コマンド列などが用意されています。DataGridの列にバインドしたデータは、HTML<table>を使用して表形式で表示します。このため、DataGridを使用して図1のような「買い物かご」を表示するには、「小計」、「送料」、「合計」行のセルを結合する必要があります。

 

 

 

図1: Repeaterを使用して「買い物かご」を表示したサンプル

 

図2: DataListを使用して書籍を2列に表示したサンプル

 

図3:DataGridを使用して書籍を表形式で表示したサンプル

 

 

データコントロールにデータベースのテーブルを表示するには、Page_LoadイベントでDataSet(DataTable)、またはDataReaderをバインドします。

 

たとえば、Accessの得意先テーブルをDataGridに表示するには、次のようなDataGridコントロールを作成します。Page_Loadイベントでは、DataGridDataSourceプロパティにDataSetを設定して、DataBindメソッドを実行します。

<asp:DataGrid id="DataGrid1" runat="server"></asp:DataGrid>

 

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 ・・・

  da.Fill(ds)

  DataGrid1.DataSource = ds

  DataGrid1.DataBind()

End Sub

 

DataBindメソッドが実行されると、DataSetに格納されている得意先テーブル(DataTable)RowsコレクションからDataRowを取り出して、DataGridのアイテム(DataGridItem)を生成します。このとき、ItemCreatedイベントが発生します。次に、DataGridItemDataItemプロパティにDataRowを格納します。このとき、ItemDataBoundイベントが発生します。この処理をすてべの、DataRowに対して繰り返します。

 

RepeaterDataListにデータベースのテーブルをバインドするときも、DataGridと同様の処理が行われます。ただしRepeaterDataListの場合、DataGridItemの代わりにRepeaterItemDataListItemを作成します。

 

データコントロールの機能をまとめると表1のようになります。機能的には、DataGridDataListRepeaterの順になっていますが、どのデータコントロールが最適かを決めるには機能と用途の両面から比較検討する必要があります。

 

表1:データコントロールの機能比較                                                                   X:無 ○:有 △:条件付

Repeater

DataList

DataGrid

HTML<table>を使用して表示する

X

1

ページング

X

X

並べ替え

X

X

編集

X

行の選択

X

複数列の表示

X

X

列の自動生成

X

X

1 RepeatLayoutプロパティにTableを設定したときは<table>Flowを設定したときは<span>が生成されます。