問題は、列を作成しましたが、DataTable に行を挿入していないため、ブラウザーでサイトを実行しても結果が表示されないことです。
また、 DataListコントロールが ASP.NET でどのように機能するかを理解する必要があると思います。
一度だけ表示される情報用の HeaderTemplate と、繰り返されるアイテム用のItemTemplate を作成する必要があります。
見出しに使用する行がわからないため、DataTable を HeaderTemplate にバインドできません。
以下の例では、見出しに文字列プロパティを使用し、繰り返し項目に DataTable を使用しています。
ASPX:
<asp:DataList ID="dlcalender" runat="server">
<FooterTemplate>
</FooterTemplate>
<HeaderTemplate>
<asp:Label ID="head1" runat="server" Text='<%# Heading1 %>' />
<asp:Label ID="head2" runat="server" Text='<%# Heading2 %>' />
<asp:Label ID="head3" runat="server" Text='<%# Heading3 %>' />
<asp:Label ID="head4" runat="server" Text='<%# Heading4 %>' />
</HeaderTemplate>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"Rego No")%>
<%# DataBinder.Eval(Container.DataItem,"Column1") %>
<%# DataBinder.Eval(Container.DataItem,"Column2")%>
<%# DataBinder.Eval(Container.DataItem,"Column3")%>
</ItemTemplate>
</asp:DataList>
コードビハインド:
public string Heading1 { get; set; }
public string Heading2 { get; set; }
public string Heading3 { get; set; }
public string Heading4 { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
Heading1 = "Heading 1";
Heading2 = "Heading 2";
Heading3 = "Heading 3";
Heading4 = "Heading 4";
var list = new List<string> { "Column1", "Column2", "Column3" };
var table = new DataTable();
table.Columns.Add(new DataColumn("Rego No", typeof(string)));
foreach (var item in list)
table.Columns.Add(item, typeof(string));
//Now add some rows(which will be repeated in the ItemTemplate)
table.Rows.Add("0", "Row 0", "Row 0", "Row 0");
table.Rows.Add("1", "Row 1", "Row 1", "Row 1");
table.Rows.Add("2", "Row 2", "Row 2", "Row 2");
dlcalender.DataSource = table;
dlcalender.DataBind();
}
また、グリッドビューを使用しないのはなぜですか?表形式のデータを表示する方がはるかに優れています。