DataListにArrayListをバインドするには
● DataListにArrayListをバインドするサンプル

図 DataListにArrayListをバインドするサンプル
このサンプルは、DataListにArrayListをバインドしています。DataListのHeaderTemplate, ItemTemplate, FooterTemplateを使用してヘッダ、アイテム、フッタを表示しています。
このサンプルでは、以下のノウハウを習得することができます。
▲ ArrayListにListItemを追加する方法
▲ ListBoxにArrayListをバインドする方法
▲ ListBoxのHeaderTemplate/ItemTemplate/FooterTemplateの使い方
▲ ListItemのText/Valueプロパティを表示する方法(Container.DataItem)
▲ ListItemのText/Valueプロパティをフォーマットして表示する方法(DataBinder.Eval)
このサンプルでは、DataListにArrayListをバインドさせて表示しています。ArrayListにListItemを追加するには、ArrayListのAdd()メソッドを使用します。ListItemを生成するには、New ListItem(“Text”, “Value”)のように記述します。ListItemの引数には、Text/Valueプロパティを指定します。このサンプルでは、TextにVisual Studio .NETの言語名(Visual Basic .NET)を設定しています。Valueには、略称(VB.NET)を設定しています。ArrayListをDataListにバインドするには、DataListのDataSourceプロパティにArrayListを設定してDataBind()メソッドを実行します。
4: Dim arrVsNet As New
ArrayList()
5: With arrVsNet
6: .Add(New
ListItem("Visual Basic .NET","VB.NET"))
7: .Add(New
ListItem("Visual C++ .NET","C++.NET"))
8: .Add(New
ListItem("Visual C# .NET","C#.NET"))
9: .Add(New
ListItem("Visial J# .NET","J#.NET"))
10: End With
11: dlstVsNet.DataSource =
arrVsNet
12: dlstVsNet.DataBind()
DataListにバインドされたArrayListを表示するには、ItemTemplateを使用します。たとえば、ArrayListに格納されているListItemのText/Valueプロパティを表示するには、Data Binding Expressionを使用してContainer.DataItem.Text, Container.DataItem.Valueのように記述します。Text/Valueをフォーマットして表示するには、DataBinderクラスのEval()メソッドを使用します。
<%# DataBinder.Eval(Container.DataItem,”Text”) %>
<%# DataBinder.Eval(Container.DataItem, “Value”,”(<b>{0:d}</b>)”) %>
Data Binding Expressionは、<%#....%>タグ内に記述します。行20-22では、HeaderTemplateでヘッダ情報(Visual Basic .NET)を表示しています。行23-26では、ItemTemplateでArrayListに格納されているListItemのText/Valueプロパティを表示しています。行27-29では、FooterTemplateでフッタ情報(--以上--)を表示しています。
19: <asp:DataList id="dlstVsNet"
runat="server">
20: <HeaderTemplate>
21: <b>Visual Studio
.NET</b>
22: </HeaderTemplate>
23: <ItemTemplate>
24: <%# Container.DataItem.Text %>
25: (<b><%# Container.DataItem.Value %></b>)
26: </ItemTemplate>
27: <FooterTemplate>
28: <b>--以上--</b>
29: </FooterTemplate>
30:
</asp:DataList>
ArrayListにListItemの代わりに直接言語名を追加したときは、Data Binding ExpressionにContainer.DataItemのように記述します。
arrVsNet.Add(“Visual Basic .NET”)
<%# Container.DataItem %>