How to hide columns in an ASP.NET GridView with auto-generated columns?

前端 未结 12 1664
陌清茗
陌清茗 2020-11-30 08:28

GridView1.Columns.Count is always zero even SqlDataSource1.DataBind();

But Grid is ok

I can do

for (int i = 0; i < GridView1.HeaderRow.Cel         


        
12条回答
  •  抹茶落季
    2020-11-30 08:59

    Similar to accepted answer but allows use of ColumnNames and binds to RowDataBound().

    Dictionary _headerIndiciesForAbcGridView = null;
    
    protected void abcGridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (_headerIndiciesForAbcGridView == null) // builds once per http request
        {
            int index = 0;
            _headerIndiciesForAbcGridView = ((Table)((GridView)sender).Controls[0]).Rows[0].Cells
                .Cast()
                .ToDictionary(c => c.Text, c => index++);
        }
    
        e.Row.Cells[_headerIndiciesForAbcGridView["theColumnName"]].Visible = false;
    }
    

    Not sure if it works with RowCreated().

提交回复
热议问题