如何动态隐藏多个gridview列?

时间:2013-10-29 15:31:44

标签: c# asp.net gridview

我正在使用

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列

2 个答案:

答案 0 :(得分:1)

考虑到GridView有些行不是数据(寻呼机,页脚等)。

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

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

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

答案 1 :(得分:1)

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

以下是类似的答案:How To Hide Columns with auto-generated columns