【问题标题】:How do I make several gridview columns invisible dynamically?如何使几个 gridview 列动态不可见?
【发布时间】:2013-11-08 20:49:04
【问题描述】:

我正在使用

e.Row.Cells[0].Visible = false;

使单个列不可见。它可以工作,但是当我尝试像这样添加另一个时:

e.Row.Cells[0].Visible = false; 
e.Row.Cells[1].Visible = false; //i tried listing all and still got the out of range error 

我收到错误Specified argument was out of the range of valid values. Parameter name: index

我正在使用 Gridview 的 RowDataBound 事件中的命令,从 0 开始,gridview 有 12 列

【问题讨论】:

  • 您是否设置了断点来检查您在运行时将 gridview 绑定到的数据?另外,您的 gridview 是否设置为 autogeneratecolumns = true?

标签: c# asp.net gridview


【解决方案1】:

考虑到GridView 有一些不是数据的行(pager、footer 等)。

我想说你应该有这样的东西,所以你只将隐藏逻辑应用于 DataRow 元素。

if (e.Row.RowType == DataControlRowType.DataRow)
{
    e.Row.Cells[0].Visible = false; 
    e.Row.Cells[1].Visible = false;
}

要查看所有行类型,请检查this MSDN article

【讨论】:

  • 我相信如果您要隐藏列,则无需在 DataRow 部分执行此操作。不确定,但我认为标题和数据中的列数应该是一致的。
【解决方案2】:

如果您的 Gridview 有 autogeneratecolumns = true,您可能需要将代码放入 RowCreated 事件而不是 RowDataBound 事件。

这是一个类似的答案:How To Hide Columns with auto-generated columns

【讨论】:

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