我在运行时添加数据时如何隐藏gridview列?

时间:2013-06-14 10:22:43

标签: 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

并且服务器抛出异常:

ArgumentOutOfRangeException.

2 个答案:

答案 0 :(得分:3)

在GridView中设置GridView.Columns.Count时,

AutoGenerateColumns="true"将为0。

您可以尝试明确声明列并设置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>

答案 1 :(得分:0)

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

protected void gridView_DataBound(object sender, EventArgs e) 
{

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