C# 如何使多个gridview列动态不可见?

C# 如何使多个gridview列动态不可见?,c#,asp.net,gridview,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 我发现错误指定的参数超出了有效值的范围。 参数名称:索引 我正在使用Gridview的RowDataBound事

我正在使用

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 
我发现错误
指定的参数超出了有效值的范围。
参数名称:索引


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

考虑到
Gridview
有一些非数据行(寻呼机、页脚等)

我想说您应该有这样的东西,这样您就可以只对
DataRow
元素应用隐藏逻辑

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

要查看所有行类型,请选中。

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


这里有一个类似的答案:

我相信如果要隐藏列,就不需要在DataRow部分进行隐藏。不确定,但我认为列计数在标题和数据中应该是一致的。是否设置了断点来检查在运行时将gridview绑定到的数据?另外,gridview是否设置为autogeneratecolumns=true?