2013-02-03 2 views
0

코드 :동적 DataTable을 DataList에 바인딩하는 방법? 뒤에

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에 헤더 목록을 표시하는 방법을 안내해 주시겠습니까?

+1

데이터 열을 작성한 경우에만 아직 행을 삽입하지 않았습니다. –

답변

0

및 linq.

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

<%# Eval("c1") %> 
<%# Eval("c2") %> 
...... 
0

문제를 사용하면 열을 만든 있지만 사이트를 실행할 때 어떤 결과가 표시되지 않는 이유는 그래서 당신이 DataTable에있는 행을 삽입하지 않은 것입니다 귀하의 브라우저에서

나는 또한 DataList 컨트롤이 ASP.NET에서 어떻게 작동하는지 이해해야한다고 생각합니다.

는 당신은 반복로 가고있는 항목에 대한 번 와 ItemTemplate을 표시 할 정보에 대한는 HeaderTemplate을 작성해야합니다.

머리글에 사용할 행을 알 수 없기 때문에 DataTable을 HeaderTemplate에 바인딩 할 수 없습니다.

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(); 
} 
내가 문자열 제목에 대한 속성과 반복 항목에 대한 귀하의 DataTable을 사용했습니다 아래의 예에서

또한 격자보기를 사용하는 것이 가장 좋습니다. 난 당신이 런타임에 동적으로 데이터 열을 생성하기 때문에 당신이

0

이 무엇을 생각 데이터, 당신은뿐만 아니라 런타임에있는 gridview에 추가 할 예 : 위의 코드에서

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(); 

, 데이터 테이블에 추가 될 때 데이터 테이블에 열을 추가했습니다.

모두 추가하지 않으려는 경우 필터링 할 수 있습니다.

관련 문제