ここでは、GridView のデータソースに配列を設定しリスト表示するサンプルコードを掲載しています。 使用するサンプルでは、DateTime 型配列を GridView で表示しています。表示している項目は以下の通りです。
スポンサーリンク
- DateTime.DayOfWeek プロパティ(Eval メソッドを使用)
- DateTime.DayOfWeek プロパティ(DataBinder.Eval Shared メソッドを使用)
- GridViewRow.RowIndex プロパティ
サンプルコード
ASPX
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
<Columns>
<!-- DayOfWeek プロパティ (使用時にはこのコメントは削除すること)-->
<asp:TemplateField HeaderText="Eval" >
<ItemTemplate>
<%#Eval("DayOfWeek")%>
</ItemTemplate>
</asp:TemplateField>
<!-- DayOfWeek プロパティ (使用時にはこのコメントは削除すること)-->
<asp:TemplateField HeaderText="DataBinder.Eval" >
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "DayOfWeek")%>
</ItemTemplate>
</asp:TemplateField>
<!-- RowIndex (使用時にはこのコメントは削除すること)-->
<asp:TemplateField HeaderText="GridViewRow.RowIndex">
<ItemTemplate>
<!-- VB の場合 (使用時にはこのコメントは削除すること) -->
<%# CType(Container,GridViewRow).RowIndex %>
<!-- C# の場合 (使用時にはこのコメントは削除すること) -->
<%# ((GridViewRow)Container).RowIndex %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
VB.NET
' DateTimeオブジェクトの配列を生成する
Dim dts() As DateTime = {New DateTime(2001, 1, 1), _
New DateTime(2002, 2, 2), _
New DateTime(2003, 3, 3)}
'配列をデータソースに設定
GridView1.DataSource = dts
'バインド
GridView1.DataBind()
C#
// DateTimeオブジェクトの配列を生成する
DateTime[] dts = {new DateTime(2001, 1, 1),
new DateTime(2002, 2, 2),
new DateTime(2003, 3, 3)};
// 配列をデータソースに設定
GridView1.DataSource = dts;
// バインド
GridView1.DataBind();
出力結果
サンプルコードを実行すると以下のリストが出力されます。
| Eval | DataBinder.Eval | GridViewRow.RowIndex |
|---|---|---|
| Monday | Monday | 0 |
| Saturday | Saturday | 1 |
| Monday | Monday | 2 |
Container
ASPX ファイル内で使用している Container は、GridView コントロールの行単位の情報が 入っている入れ物 ( GridViewRow ) です。ASP.NET が自動で作成しますので、特別に記述する必要はありません。 GridView コントロールを使用している場合は GridViewRow オブジェクトであり、Repeater コントロールを使用している場合は RepeaterItem となるように定義によって型が異なります。Container をキャストして 各コントロールの行オブジェクト として使用します。また、オブジェクト型を返す Container.DataItem はバインドされた配列の要素を返します。上記の例では、DateTime オブジェクトということになります。
Eval メソッド と DataBinder.Eval Shared(static) メソッド
Eval メソッドは、Container.DataItem のプロパティ定義をパラメータに与え、 その結果 ( ToString )を返すメソッドです。今回のサンプルでは、DateTime.DayOfWeek.ToString になります。 一方の DataBinder.Eval メソッドは、Eval メソッドを汎用的にしたもので 第1パラメータに任意のコンテナを与えることができます。今回の例では、わざわざ DataBinder.Eval Shared メソッドを使用する必要はないかもしれません。
IEnumerable インターフェース
ここでは、配列を DataSource に設定する例を示しましたが、ユーザ定義クラスの配列であっても設定できますし、DirectoryInfo( ディレクトリパス ).GetFiles メソッドで返される FileInfo クラス配列でディレクトリ内のファイルの リストをグリッドビューに表示したりすることもできます。DataSourceに設定する条件は、IEnumerable インターフェースを実装したクラス ( 構造体 ) です。
参考