Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改DataList(Webforms,C#)中的列数_C#_Asp.net_Web Applications_Webforms_Databinder - Fatal编程技术网

如何更改DataList(Webforms,C#)中的列数

如何更改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])%> &nbsp &nbs

我制作了一个web应用程序,它查询数据库并在数据列表中返回结果

用户可以指定要返回的列。对于Datalist,我已完成以下操作:

        <asp:DataList runat="server" ID="list">
        <ItemTemplate>
            <%# DataBinder.Eval(Container.DataItem, columns[0])%>
            &nbsp &nbsp &nbsp
            <%# DataBinder.Eval(Container.DataItem, columns[1])%>
            &nbsp &nbsp &nbsp
            <%# DataBinder.Eval(Container.DataItem, columns[2])%>
            &nbsp &nbsp &nbsp
            <%# DataBinder.Eval(Container.DataItem, columns[3]) %>
            &nbsp &nbsp &nbsp
            <%# DataBinder.Eval(Container.DataItem, columns[4]) %>
            &nbsp &nbsp &nbsp
            <%# 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()