【问题标题】:Hide Multiple Gridview rows隐藏多个 Gridview 行
【发布时间】:2015-05-06 20:22:04
【问题描述】:

我有一个数据绑定网格,其中自动生成的列设置为 true,因为它使用带有存储过程的 sql 数据源。我找到了一种隐藏一列的方法

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
 e.Row.Cells[1].Visible = false;
}

我想完全隐藏整列

但是如何隐藏多个列。假设我有 10 列,并想使用以下方法隐藏第 2、5 和 7 列:

 e.Row.Cells[1].Visible = false
 e.Row.Cells[4].Visible = false
 e.Row.Cells[6].Visible = false

我会得到一个超出范围的异常。有没有其他方法可以处理这个问题?

提前致谢

【问题讨论】:

  • 您是要完全隐藏列,还是只隐藏特定行?
  • 你不能从后面隐藏列吗?喜欢e.Row.Cells[6].Visible = false; e.Row.Cells[4].Visible = false;
  • 尝试一次隐藏多个列时,不这样做会引发超出范围的异常

标签: c# asp.net gridview


【解决方案1】:

您可以在button_click 事件或gridviewOnDataBound 事件中写入下一行,这在GridView 被绑定时发生。

protected void GridView_OnDataBound(object sender, EventArgs e)
{
   GridView.Columns[1].Visible = false;
   GridView.Columns[4].Visible = false;
   GridView.Columns[6].Visible = false;
}

编辑

对于autogenerated 列,在您的gridview 的OnRowDataBound 事件中使用此代码

protected void gridView_OnRowDataBound (object sender, GridViewRowEventArgs e)
{
   if (e.Row.RowType != DataControlRowType.Pager) { e.Row.Cells[1].Visible = false; }
}

【讨论】:

    【解决方案2】:

    你可以试试<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">

    并在需要时使用临时字段

    <asp:TemplateField>
       <ItemTemplate>
          <%# DataBinder.Eval(Container, "DataItem.ID_Dodavatel") %>
       </ItemTemplate>
    </asp:TemplateField>
    

    【讨论】:

      猜你喜欢
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多