我有一个WinForms应用程序DataGridView
,其数据源是具有一列数据表(从SQL Server填写) xxx
。 下面的代码引发的异常
ArgumentException的是未经处理的。 名为XXX列不能被发现。
foreach (DataGridViewRow row in Rows)
{
if (object.Equals(row.Cells["xxx"].Value, 123))
}
是否有可能获得通过列名的单元格的值?
我有一个WinForms应用程序DataGridView
,其数据源是具有一列数据表(从SQL Server填写) xxx
。 下面的代码引发的异常
ArgumentException的是未经处理的。 名为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))
{
// ...
}
}
是的,只要去掉引号和添加的.index,即
foreach (DataGridViewRow row in Rows)
{
if (object.Equals(row.Cells[xxx.Index].Value, 123))
......那是,如果你的列真的叫XXX,而不是其他一些名称,如列1,等等。你可以independantly设置列名和列标题所以在设计检查。
通过这样做,你将能够在“XXX”列名接入小区为当前所选行。
dataGridView1.SelectedRows[0].Cells["xxx"]
我找到了这个:
样品:
if(dataGridViewProjectList.Rows[dataGridViewProjectList.CurrentCell.RowIndex].Cells["dateendDataGridViewTextBoxColumn"].Value.ToString().Length == 0)
如果在设计模式,你网格列。 然后列名字的GridView ~~~栏控件的名称例如:
DataGridViewTextBoxColumn idDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
idDataGridViewTextBoxColumn.Name = "idDataGridViewTextBoxColumn";
那么你就可以访问这个权,你想要的。
row.Cells["idDataGridViewTextBoxColumn"].Value
如果你看一下:
row.Cells["xxx"].Value;
这样 :
row.Cells[yourdataGridView.Columns["xxx"].Index].Value;