データをデータリスト/グリッドビュー/リピーターにバインドする場合、オブジェクトのリストとして作成し、それをコントロールにバインドする方が簡単です。グリッドビューを使用した例を次に示します。
<asp:GridView ID="GridView1" runat="server" AllowSorting="False"
AutoGenerateColumns="false" BackColor="White"
BorderWidth="2px" BorderStyle="Solid"
CellPadding="4" ForeColor="#333333" GridLines="both"
EmptyDataText="No Log Messages">
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<Columns>
<asp:TemplateField Visible="false" ItemStyle-HorizontalAlign="Center" HeaderText="ID" HeaderStyle-ForeColor="white">
<ItemTemplate>
<asp:Label ID="lblId" runat="Server" Text=' <%#Eval("ID")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField Visible="false" ItemStyle-HorizontalAlign="Center" HeaderText="Address" HeaderStyle-ForeColor="white">
<ItemTemplate>
<asp:Label ID="lblAddress" runat="Server" Text=' <%#Eval("Address1")%>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
この例では、2つの列を持つテーブルを作成します。各列は、対応するデータソースにIDとAddress1という名前の列があることを想定しています。サーバー側では、これらの名前の列を持つオブジェクトのリストを作成し、データソースをコントロールにバインドします。このような:
まず、プロパティを使用してクラスを作成します。
Public Class myClassAddress
Public Property ID As String
Public Property Address1 As String
End Class
次に、グリッドビューがある場所の背後にあるコードで、そのクラスをインスタンス化して入力します。
Dim myList As New List(Of myClassAddress)
Dim newClass As myClassAddress
newClass = New myClassAddress
newClass.Address1 = "some address"
newClass.ID = "1"
myList.Add(newClass)
newClass = New myClassAddress
newClass.Address1 = "some address2"
newClass.ID = "12"
myList.Add(newClass)
もちろん、この例では、値をハードコーディングしているだけです。データベースやxmlファイルなどからのデータでクラスを埋めることができます。上記の例では、myClassAddressクラスの2つのインスタンスを作成します。また、これらのクラスのリストを作成し、各インスタンス化をそのリストに追加します。次に、リストをコントロールにバインドします。
me.gridView1.datasource = myList
me.gridview1.bindData()
これは大変なことのように思えるかもしれませんが、慣れれば、これらのタイプのコントロールにデータをバインドする最も簡単な方法です。ご不明な点がございましたら、お気軽にお問い合わせください。