1

我在用户控件中有一个数据列表,该数据列表被加载到用户可以根据某些复选框自定义报告的页面中。

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

如果我做:

datatable1.Columns.Remove("WorkLog");

该代码引发异常,因为:

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

不存在。

我对用户控件的处理都错了吗?这个用户控件应该总是能够显示工作日志,所以我认为将它绑定在那里并不坏,但同时我希望能够在用户想要的情况下隐藏它。

4

2 回答 2

2

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

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

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

于 2009-11-02T19:15:40.997 回答
0

检查某些条件后将其绑定到后面的代码中。像

if (visible) {
    //bind
}

在解除控制的同时

  visible = false;

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

于 2009-11-02T19:15:16.993 回答