使用linq隐藏GridView列

时间:2012-09-30 05:41:07

标签: c# asp.net linq gridview rowdatabound

我试图在RowDataBound事件上隐藏我的gridview列。目前,我正在做:

e.Row.Cells[4].Visible = false;

这种方法的问题在于,每当我在网格视图中更改列的顺序时,我也必须在此处更改索引。

此外,还有另一种方法:

foreach (TableCell col in e.Row.Cells)
        {
            if (col.Text == "Name")
            {
                col.Visible = false;
            }
        }

有人告诉我,可以使用LINQ。

类似的东西:

((TableCell)e.Row.Cells.Cast<TableCell>()
             .Where(c => c.Text == "name")).Visible = false;

到目前为止,我无法这样做。有人能告诉我这里我做错了什么吗?

2 个答案:

答案 0 :(得分:3)

怎么样

e.Row.Cells.Cast<TableCell>()
           .Where(c => c.Text == "name")
           .ToList()
           .ForEach(col => col.Visible = false);

答案 1 :(得分:1)

如果有其他人发现这个。我修改了Nikhil的答案以隐藏整个列(包括标题)。

e.Row.Cells.Cast<DataControlFieldCell>()
    .Where(c => c.ContainingField.HeaderText == "Name" 
             || c.ContainingField.HeaderText == "Title")
    .ToList()
    .ForEach(c => c.ContainingField.Visible = false);