1

背後にあるコード:

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Rego No", typeof(string)));
foreach (var item in list)
{ 
    dt.Columns.Add(new DataColumn(string.Format("{0:dd/MM}",item),typeof(string)));
    //enter code here 
}
dlcalender.DataSource = dt;
dlcalender.DataBind();

ASPX:

DataTable列は日付のように動的です。私は拘束していますDataTableが、何も表示されていません。

ヘッダーリストの表示方法を教えてくださいDataTable

4

3 に答える 3

0

リンク付き。

dlcalender.DataSource = dt.select(p=>new{
c1=p.columns[0],
c2=p.columns[1],
......
});

と使用

<%# Eval("c1") %>
<%# Eval("c2") %>
......
于 2013-02-03T08:45:53.953 に答える
0

問題は、列を作成しましたが、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();
}

また、グリッドビューを使用しないのはなぜですか?表形式のデータを表示する方がはるかに優れています。

于 2013-02-03T09:18:50.687 に答える
0

実行時にデータ列を動的に作成したため、実行時にグリッドビューにも追加する必要があります。例:

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Rego No", typeof(string)));
 foreach (var item in list)
  { 
    dt.Columns.Add(new DataColumn(string.Format("{0:dd/MM}",item),typeof(string)));
    //enter code here 

dlcalender.Columns.Add(string.Format("{0:dd/MM}",item), string.Format("{0:dd/MM}",item));
  }
dlcalender.DataSource = dt;
dlcalender.DataBind();

上記のコードでは、列がデータ テーブルに追加されると同時に、列がデータリストに追加されました。

すべてを追加したくない場合は、それらをフィルタリングできます。

于 2016-10-16T06:02:19.900 に答える