DataListにDataTableをバインドするには
● DataListにDataTableを生成してバインドするサンプル

図 DataListにDataTableを生成してバインドするサンプル
このサンプルは、DataListにDataTableを生成してバインドしています。DataListのHeaderTemplate, ItemTemplate, FooterTemplateを使用してヘッダ、アイテム、フッタを表示しています。
このサンプルでは、以下のノウハウを習得することができます。
▲ DataTableをランタイム時に生成する方法
▲ DataTableにカラムを追加する方法
▲ DataTableにDataRowを追加する方法
▲ ListBoxにDataTableをバインドする方法
▲ ListBoxのHeaderTemplate/ItemTemplate/FooterTemplateの使い方
▲ DataTableのDataColumnを表示する方法
DataTableをランタイム時に生成するには、New DataTable()でインスタンスを生成します。DataTableにカラムを追加するには、ColumnsコレクションのAdd()メソッドを使用します。Add()メソッドの引数には、DataColumnを指定します。DataColumnは、New DataColumn()でインスタンスを生成します。DataColumn()の引数には、カラム名とデータ型を指定します。サンプルでは、Value/Textのカラムを文字型として追加しています。
DataTableにレコードを追加するには、DataTableのNewRow()メソッドでDataRowを生成します。DataRowを生成したら、Itemプロパティにカラム名を指定して値を設定します。DataRowをDataTableに追加するには、DataTableのRo
DataTableをバインドするには、DataListのDataSourceプロパティにDataTableを設定してDataBind()メソッドを実行します。
6: Dim dt As New DataTable
7: Dim dr As DataRow
8: With dt
9: .Columns.Add( New
DataColumn("Value", GetType(String)) )
10: .Columns.Add( New
DataColumn("Text", GetType(String)) )
:::
12: dr = .NewRow()
13:
dr.Item("Value") = "VB.NET"
14:
dr.Item("Text") = "Visual Basic .NET"
15: .Ro
:::
31: End With
33: dlstVsNet.DataSource = dt
34: dlstVsNet.DataBind()
DataListにバインドしたDataTableを表示するには、ItemTemplateを使用します。DataTableのカラムを表示するには、Container.DataItem(“ColumnName”)のように記述します。カラムをフォーマットして表示するには、DataBinder.Eval()を使用します。行47-50では、ItemTemplateを使用してDataTableのText/Valueのカラムを表示しています。
<%# Container.DataItem(“Text”) %> <%# Container.DataItem(“Value”) %>のように記述すると、TextとValueの間に空白が挿入されます。サンプルのように&でTextとValueを結合すると空白が除去されます。
40: <asp:DataList id="dlstVsNet"
runat="server"
:::
43:
EnableVie
44: <HeaderTemplate>
45: <b>Visual Studio
.NET</b>
46: </HeaderTemplate>
47: <ItemTemplate>
48: <%# Container.DataItem("Text") _
49: &
"(<b>" & Container.DataItem("Value") &
"</b>)" %>
50: </ItemTemplate>
51: <FooterTemplate>
52: <b>--以上--</b>
53: </FooterTemplate>
54:
</asp:DataList>