我在usercontrol中有一个datalist,它被加载到一个页面中,用户可以根据一些复选框自定义报表。
然而,其中一个复选框是“隐藏工作日志”,它应该隐藏结果集中的工作日志列,因为它可能会很长并且会干扰报告。
如果我这样做:
datatable1.Columns.Remove("WorkLog");
代码抛出异常,因为:
<asp:Label ID="WorkLog" runat="server" Text='<%# Bind("WorkLog") %>'></asp:Label></td>
不存在。
我对用户控件的所有错误?这个用户控件应该总是能够显示工作日志,所以我不认为在那里绑定它是不好的,但同时我希望能够在用户需要时隐藏它。
答案 0 :(得分:2)
尝试从DataList中删除标签控件,而不是从数据源中删除列(即DataTable)
DataList1.Controls.Remove(DataList1.FindControl("WorkLog"));
如果数据源的列数多于您在页面上显示的列数,则不会出现错误,但是,如果您尝试显示列,则会出现错误,如您所发现的那样在数据源中不存在。
答案 1 :(得分:0)
将其绑定在代码中。像
if (visible) {
//bind
}
删除控件时
visible = false;
您可能需要将会话var更改为可见:)