2012-09-30 56 views
0

我想隐藏我RowviewBound事件上的GridView列。目前,我做:隐藏GridView列使用LINQ

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; 

到目前为止,我不能这样做。有人能告诉我我在这里做错了吗?

回答

3

如何

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

让我试试这个。 :) –

+0

哇!有效。谢谢:) –

+0

老兄,它只隐藏标题不是行。:( –

1

如果任何人发现这一点。我修改了Nikhil的答案来隐藏整个列(包括标题)。

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