2010-04-18 92 views
1

我有一个10列的GridView。在某些情况下,我想添加一个名为“到期日期”的新列。问题是,当用户再次按下“搜索”(回发)时,该列再次被添加。
我加上列,看它是否已经存在前检查:C#GridView - 检查添加新列时列是否已经存在失败

BoundField dtExp = new BoundField 
          {DataField = "DateTimeExpired", HeaderText = "Expiration Date", DataFormatString = "{0:d}"}; 
if (!grid.Columns.Contains(dtExp)){grid.Columns.Add(dtExp);} 

但问题是,即使对该列已经存在,“包含”返回false。
我在做什么错?

谢谢!

回答

3

它正在检查网格是否包含您的新的列(显然它不会;您还没有添加它);你实际上想要检查它是否包含一个不同的列与同名。也许只是循环Columns,检查一个与DataField == "DateTimeExpired"

+0

谢谢,它的工作原理 - 但是是不是有更多的“内置”的解决方案呢? – Nir 2010-04-18 08:36:42

+0

@Nir;不。通常列只添加一次,所以它不是问题,不需要额外的代码。 – 2010-04-18 08:40:36

+0

好的,非常感谢,Marc。 – Nir 2010-04-18 08:49:19

4

你可以施放Columns类型化的IEnumerable <>和使用LINQ检查列是否存在:

var gridBoundColumns = Grid1.Columns.OfType<BoundField>(); 
if(gridBoundColumns.Any(bf => bf.DataField.Equals(searchColumn.Name)) == false) 
{ 
    Grid1.Columns.Add(new BoundField{ ... }); 
} 
相关问题