ここでは、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 インターフェースを実装したクラス ( 構造体 ) です。
参考