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

时间:2009-11-02 19:07:46

标签: c# asp.net user-controls datalist

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

然而,其中一个复选框是“隐藏工作日志”,它应该隐藏结果集中的工作日志列,因为它可能会很长并且会干扰报告。

如果我这样做:

datatable1.Columns.Remove("WorkLog");

代码抛出异常,因为:

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

不存在。

我对用户控件的所有错误?这个用户控件应该总是能够显示工作日志,所以我不认为在那里绑定它是不好的,但同时我希望能够在用户需要时隐藏它。

2 个答案:

答案 0 :(得分:2)

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

DataList1.Controls.Remove(DataList1.FindControl("WorkLog"));

如果数据源的列数多于您在页面上显示的列数,则不会出现错误,但是,如果您尝试显示列,则会出现错误,如您所发现的那样在数据源中不存在。

答案 1 :(得分:0)

检查某些条件后,

将其绑定在代码中。像

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

  visible = false;

您可能需要将会话var更改为可见:)