2010-04-18 37 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{ ... }); 
} 
相關問題