如何更改DataList(Webforms,C#)中的列数
我制作了一个web应用程序,它查询数据库并在数据列表中返回结果 用户可以指定要返回的列。对于Datalist,我已完成以下操作:如何更改DataList(Webforms,C#)中的列数,c#,asp.net,web-applications,webforms,databinder,C#,Asp.net,Web Applications,Webforms,Databinder,我制作了一个web应用程序,它查询数据库并在数据列表中返回结果 用户可以指定要返回的列。对于Datalist,我已完成以下操作: <asp:DataList runat="server" ID="list"> <ItemTemplate> <%# DataBinder.Eval(Container.DataItem, columns[0])%>   &nbs
<asp:DataList runat="server" ID="list">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, columns[0])%>
     
<%# DataBinder.Eval(Container.DataItem, columns[1])%>
     
<%# DataBinder.Eval(Container.DataItem, columns[2])%>
     
<%# DataBinder.Eval(Container.DataItem, columns[3]) %>
     
<%# DataBinder.Eval(Container.DataItem, columns[4]) %>
     
<%# DataBinder.Eval(Container.DataItem, columns[5]) %>
</ItemTemplate>
</asp:DataList>
 
 
 
 
 
如果用户选择7列返回,它将只显示6列;如果用户选择5列返回,它将抛出ArgumentOutOfRangeExpection
有没有办法放一个if语句来检查它是否需要该列
谢谢将数据绑定到datalist/gridview/repeater时,只需创建对象列表并将其绑定到控件即可。下面是一个使用gridview的示例:
<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>
现在,在gridview背后的代码中,实例化该类并填充它:
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类的两个实例。它还创建这些类的列表,并将每个实例化添加到该列表中。现在,只需将列表绑定到控件:
me.gridView1.datasource = myList
me.gridview1.bindData()
我知道这看起来可能很多,但一旦你习惯了,这是将数据绑定到这些类型控件的最简单方法。如果您有任何问题,请告诉我。您的代码给了我一系列错误,因此我将其更改为,但我需要使数据绑定器使用变量“c”。对不起,我是为VB.Net编写的。您在尝试使用C时是否出错?我将编辑我的响应。有一种更简单的方法可以将数据绑定到GridView/Repeater/data List。这是一种更复杂的方法,而且无法做到这一点,因为列的名称可能会更改,并且绑定到grid view的列数每次都会更改,因此我无法硬编码任何标签。
me.gridView1.datasource = myList
me.gridview1.bindData()