C#Gridview - 在添加新列时检查列是否已存在失败

时间:2010-04-18 08:21:48

标签: c# gridview ado.net

我有一个包含10列的GridView。在某种情况下,我想添加一个名为“过期日期”的新列。问题是当用户再次按下“搜索”(Postback)时,会再次添加该列 我在添加列之前检查,看它是否已经存在:

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

但问题是即使列已经存在,“Contains”也会返回false 我究竟做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:5)

您可以将Columns投射到键入的IEnumerable<>并使用LINQ检查列是否存在:

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

答案 1 :(得分:3)

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