我有一个包含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 我究竟做错了什么?
谢谢!
答案 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"
。