Asp.net 在rutnime中添加数据时,如何隐藏gridview的列?

Asp.net 在rutnime中添加数据时,如何隐藏gridview的列?,asp.net,vb.net,webforms,Asp.net,Vb.net,Webforms,我这样做是为了向gridview添加数据 Dim dSource As New SqlDataSource dSource.ConnectionString = MyConnectionString dSource.SelectCommand = "select..." GridView1.DataSource = dSource GridView1.DataBind() 然后我想隐藏第一列 GridView1.columns(0).visible=false 服务器会抛出一个异常: Ar

我这样做是为了向gridview添加数据

Dim dSource As New SqlDataSource
dSource.ConnectionString = MyConnectionString
dSource.SelectCommand = "select..."

GridView1.DataSource = dSource
GridView1.DataBind()
然后我想隐藏第一列

GridView1.columns(0).visible=false
服务器会抛出一个异常:

ArgumentOutOfRangeException.

当您在GridView中设置
AutoGenerateColumns=“true”
时,
GridView.Columns.Count
将为0

您可以尝试显式声明列并设置
AutoGenerateColumns=“false”
,也可以尝试在codebehind中使用此选项:

GridView.Rows[0]。Cells.Count

要在数据绑定后获取列计数,请执行以下操作:

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    e.Row.Cells[index].Visible = false;
}
使用GridView的RowDataBound事件将列设置为不可见

编辑1 您可以使用
绑定字段
,如下所示

<asp:DataGrid ID="DefaultGrid" Runat="server" AutoGenerateColumns=False>
     <Columns>
          <asp:BoundColumn DataField="Index"  HeaderText="Header">
          </asp:BoundColumn>
     </Columns>
 </asp:DataGrid>

您可以在数据绑定后隐藏栅格视图列 通过使用此代码

protected void gridView_DataBound(object sender, EventArgs e) 
{

    if (someCondition == true)
    {
        // Hide the column
        this.gridView.Columns[0].Visible = false;
    }
}

在您的代码GridView1.columns(0)中,您在哪里执行此操作?visible=true?您在哪里执行databind(),在哪个事件中?
GridView1.columns[0]。visible=false
您应该放在方括号中。我在Page_Load()事件中执行此操作谢谢。如何向gridview添加列?