我有一个带有WinForms的DataGridView应用程序,DataSource是一个DataTable (由Server填充),它有一个xxx列。下面的代码引发
ArgumentException未被处理。找不到名为xxx的列。
foreach (DataGridViewRow row in Rows)
{
if (object.Equals(row.Cells["xxx"].Value, 123))
}是否可以按列名获取单元格值?
发布于 2012-11-18 01:54:06
DataGridViewColumn对象具有一个Name (仅在forms中显示)和一个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))
{
// ...
}
}发布于 2016-03-09 04:25:50
通过这样做,您将能够访问当前选定的行的"xxx“列名的单元格。
dataGridView1.SelectedRows[0].Cells["xxx"]发布于 2013-12-09 15:43:07
是的,只需删除引号并添加.Index,即
foreach (DataGridViewRow row in Rows)
{
if (object.Equals(row.Cells[xxx.Index].Value, 123)) ...that是指如果您的列真正名为xxx,而不是其他名称(如Column1等)。您可以独立设置列名和列标题,因此可以在设计器中签入。
https://stackoverflow.com/questions/13436553
复制相似问题