代码之家  ›  专栏  ›  技术社区  ›  somacore

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

  •  1
  • somacore  · 技术社区  · 15 年前

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

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

    如果我这样做:

    datatable1.Columns.Remove("WorkLog");
    

    代码引发异常是因为:

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

    不存在。

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

    2 回复  |  直到 15 年前
        1
  •  2
  •   Ken Pespisa    15 年前

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

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

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

        2
  •  0
  •   Ratnesh Maurya    15 年前

    在检查了某些条件之后,将其绑定到代码隐藏中。喜欢

    if (visible) {
        //bind
    }
    

    移除控件时

      visible = false;
    

    您可能需要将visible更改为session var:。