2

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

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

GridView1.DataSource = dSource
GridView1.DataBind()

然后我想隐藏第一列

GridView1.columns(0).visible=false

并且服务器抛出异常:

ArgumentOutOfRangeException.
4

2 回答 2

3

GridView.Columns.CountAutoGenerateColumns="true"当您在 GridView 中设置时将为 0 。

您可以尝试显式声明您的 columns 和 setting AutoGenerateColumns="false",或者您可以尝试在您的代码隐藏中使用它:

GridView.Rows[0].Cells.Count

绑定数据后获取列数,或者:

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

使用 GridView 的 RowDataBound 事件将列设置为不可见。

编辑 1

您可以使用bound field如下

<asp:DataGrid ID="DefaultGrid" Runat="server" AutoGenerateColumns=False>
     <Columns>
          <asp:BoundColumn DataField="Index"  HeaderText="Header">
          </asp:BoundColumn>
     </Columns>
 </asp:DataGrid>
于 2013-06-14T10:29:56.523 回答
0

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

protected void gridView_DataBound(object sender, EventArgs e) 
{

    if (someCondition == true)
    {
        // Hide the column
        this.gridView.Columns[0].Visible = false;
    }
}
于 2013-06-14T10:31:59.697 回答