ASP.NET GridView无法隐藏列

时间:2011-01-13 21:44:56

标签: c# asp.net gridview

所以我有一个<asp:Gridview>,在我的C#文件中,我将数据源设置为某个数据库表,然后执行.DataBind()。

但是,我想基于布尔变量隐藏表中的列。

这样的事情:

gridview.Columns['Field5'].Visible = false;

或者也许:

int c = gridview.Rows.Count();
for(int i = 0; i < c; i++){
  gridview.Rows['Field5'].Remove();
}

也许我不能让它变得不可见,但我确信我至少可以循环并删除与“field5”列相关的所有行。我不知道该怎么做。

是否有人可能有使用GridView类的正确链接以及如何使用所有方法,因为它不清楚,可能不是由microsoft编写的?

很抱歉,如果这很简单,互联网似乎缺少很多C#文档(或者它可能只是混杂着太多无用的ASP.net信息)。

4 个答案:

答案 0 :(得分:6)

没问题,诀窍是你必须通过索引引用列,而不是它的名字。

grid.Columns[1].Visible = false;

答案 1 :(得分:1)

在您的情况下,您应该遍历gridview并设置要隐藏的单元格Visible=false

        foreach (GridViewRow gvr in gv.Rows)
        {
            //here specify cell you want to hide  
            //also you may put any conditions
            gvr.Cells[0].Visible = false; // Hide cell
        }

要隐藏列,您应该这样:

        //here specify column you want to hide  
        grv.Columns[0].Visible = false; // Hide column

另请查看此文章http://www.codeproject.com/KB/webforms/Datagrid_Col_Example.aspx

答案 2 :(得分:1)

我找到了做这样的事情的好方法。

((DataControlField)gridView.Columns
           .Cast<DataControlField>()
           .Where(fld => (fld.HeaderText == "Title"))
           .SingleOrDefault()).Visible = false;

我在下面的链接中找到了它

GridView Hide Column by code

答案 3 :(得分:0)

如果您只是想快速显示某些数据,但不需要以任何方式修改它,那么gridview就可以了。但是,如果您确实想要自定义它,那么它是不切实际的。在代码隐藏中动态构建表格更容易,更快捷,您可以获得所需的所有控制权。

看看这篇文章的第一个答案:How to show pop up menu from database in gridview on each gridview row items?