ASP.NET C#-从数据列表中删除列

ASP.NET C#-从数据列表中删除列,c#,asp.net,user-controls,datalist,C#,Asp.net,User Controls,Datalist,我在usercontrol中有一个datalist,它被加载到一个页面中,用户可以根据一些复选框自定义报告 但是,其中一个复选框是“Hide Worklog”,它应该从结果集中隐藏Worklog列,因为它可能非常长并且会干扰报告 如果我这样做: datatable1.Columns.Remove("WorkLog"); 代码引发异常,因为: <asp:Label ID="WorkLog" runat="server" Text='<%# Bind("WorkLog") %>'

我在usercontrol中有一个datalist,它被加载到一个页面中,用户可以根据一些复选框自定义报告

但是,其中一个复选框是“Hide Worklog”,它应该从结果集中隐藏Worklog列,因为它可能非常长并且会干扰报告

如果我这样做:

datatable1.Columns.Remove("WorkLog");
代码引发异常,因为:

<asp:Label ID="WorkLog" runat="server" Text='<%# Bind("WorkLog") %>'></asp:Label></td>

不存在


我是不是把用户控件搞错了?这个usercontrol应该总是能够显示worklog,所以我认为将它绑定在那里并不坏,但同时如果用户愿意,我希望能够隐藏它

检查某些条件后,将其绑定到代码隐藏中。像

if (visible) {
    //bind
}
在移除控件时

  visible = false;

您可能需要更改会话变量可见:)

尝试从数据列表中删除label控件,而不是从数据源(即DataTable)中删除列


如果数据源的列数超过页面上显示的列数,则不应出现错误。但是,正如您所发现的,如果您试图显示数据源中不存在的列,则会出现错误。

yeah。。但是,为什么在不需要数据的情况下发送数据呢。。除非您想使用AJAX或其他工具来完成这项工作:)我将如何在数据列表中完成这项工作?
DataList1.Controls.Remove(DataList1.FindControl("WorkLog"));