DataListのカラムに複数のフィールドを表示するには
● DataListのカラムに複数のフィールドを表示するサンプル

図 DataListのカラムに複数のフィールドを表示するサンプル
このサンプルでは、DataListのカラムにレコードの複数のフィールドを表示します。DataListの得意先のカラムには、得意先名、部署役職、担当者名、電話番号が表示されます。
このサンプルでは、以下のノウハウを習得することができます。
▲ DataListのカラムに複数のフィールドを表示する方法
サンプルの行30-74では、DataListを定義しています。行32-38では、HeaderTemplateでヘッダを定義しています。行39-54では、ItemTemplateで奇数行に表示するアイテムを定義しています。行42では、得意先テーブルの得意先IDを表示しています。データベースのフィールドを表示するときは、<%#...%>タグ内に記述してバインドします。行45-51の<%#...%>タグには、得意先テーブルの得意先名、部署役職、担当者名、電話番号のフィールドを記述しています。StringクラスのFormat()メソッドでは、プレースホルダーを使用して各フィールドを改行させています。プレースホルダー{0},{1},{2},{3}には、得意先名、部署役職、担当者名、電話番号が挿入されます。行55-70では、AlternatingItemTemplateで偶数行に表示するアイテムを定義しています。表示するフィールドは、ItemTemplateと同じです。行71-73では、FooterTemplateでフッタ情報を定義しています。
30: <asp:DataList id="dlstCustomers"
runat="server"
31: EnableVie
32: <HeaderTemplate>
::::
38:
</HeaderTemplate>
39: <ItemTemplate>
40: <tr
class="dlstItemStyle">
41: <td>
42:
<%# Container.DataItem("CustomerID")
%>
43:
</td>
44: <td>
45:
<%#
46:
String.Format("{0}<br>{1}<br>{2}<br>{3}", _
47:
Container.DataItem("CompanyName"), _
48:
Container.DataItem("ContactTitle"), _
49:
Container.DataItem("ContactName"), _
50:
Container.DataItem("Phone"))
51:
%>
52:
</td>
53: </tr>
54: </ItemTemplate>
55: <AlternatingItemTemplate>
70: </AlternatingItemTemplate>
71: <FooterTemplate>
::::
73:
</FooterTemplate>
74:
</asp:DataList>
Page_Load()イベントでは、ページが最初にロードされたときSub DataBind()を呼び出して得意先テーブルをバインドしています。
6: Sub Page_Load(s As Object, e As
EventArgs)
7: If Not IsPostBack() Then
8: DataBind()
9: End If
10: End Sub
Sub DataBind()では、OleDbConnection, OleDbDataAdapterクラスを使用してデータベースから得意先テーブルのレコードを抽出してDataSetに格納しています。さらに、DataSetをDataListのDataSourceプロパティに設定してDataBind()メソッドでバインドしています。これで、得意先テーブルがDataListに表示されます。
12: Sub DataBind()
13: Dim strSQL As String =
"Select Top 5 * From Customers"
14: Dim con As New OleDbConnection(ConfigurationSettings.AppSettings("conStringNw"))
15: Dim da As New
OleDbDataAdapter(strSQL, con)
16: Dim ds As New DataSet()
18: da.Fill(ds)
19: dlstCustomers.DataSource = ds
20: dlstCustomers.DataBind()
21: End Sub