我有一个带有DataGridView
的WinForms应用程序,该数据源是一个数据表(从SQL Server填充),该表具有一列xxx
。以下代码引发了以下异常
foreach (DataGridViewRow row in Rows)
{
if (object.Equals(row.Cells["xxx"].Value, 123))
}
是否可以通过列名获取单元格值?
最佳答案
DataGridViewColumn
对象具有Name
(仅在表单设计器中显示)和HeaderText
(在列顶部的GUI中显示)属性。您的示例中的索引器使用了列的Name
属性,因此,既然您说这行不通,我想您实际上是在尝试使用列的标题。
内置没有任何功能可以满足您的需求,但是添加起来很容易。我将使用扩展方法来使其易于使用:
public static class DataGridHelper
{
public static object GetCellValueFromColumnHeader(this DataGridViewCellCollection CellCollection, string HeaderText)
{
return CellCollection.Cast<DataGridViewCell>().First(c => c.OwningColumn.HeaderText == HeaderText).Value;
}
}
然后在您的代码中:
foreach (DataGridViewRow row in Rows)
{
if (object.Equals(row.Cells.GetCellValueFromColumnHeader("xxx"), 123))
{
// ...
}
}