如何通过列名来获得DataGridView中的单元格的值?(How to get cell valu

2019-07-03 22:01发布

我有一个WinForms应用程序DataGridView ,其数据源是具有一列数据表(从SQL Server填写) xxx 。 下面的代码引发的异常

ArgumentException的是未经处理的。 名为XXX列不能被发现。

foreach (DataGridViewRow row in Rows)
{
    if (object.Equals(row.Cells["xxx"].Value, 123))
}

是否有可能获得通过列名的单元格的值?

Answer 1:

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))
    {
        // ...
    }
 }


Answer 2:

是的,只要去掉引号和添加的.index,即

foreach (DataGridViewRow row in Rows)
{
    if (object.Equals(row.Cells[xxx.Index].Value, 123)) 

......那是,如果你的列真的叫XXX,而不是其他一些名称,如列1,等等。你可以independantly设置列名和列标题所以在设计检查。



Answer 3:

通过这样做,你将能够在“XXX”列名接入小区为当前所选行。

dataGridView1.SelectedRows[0].Cells["xxx"]


Answer 4:

我找到了这个:

  1. 用鼠标右键单击该datagridview的。
  2. 从弹出菜单中选择“编辑栏”选择。
  3. 选择您想要的列。 设计/(名称) - 这就是你所期待的。

样品:

if(dataGridViewProjectList.Rows[dataGridViewProjectList.CurrentCell.RowIndex].Cells["dateendDataGridViewTextBoxColumn"].Value.ToString().Length == 0)


Answer 5:

如果在设计模式,你网格列。 然后列名字的GridView ~~~栏控件的名称例如:

DataGridViewTextBoxColumn idDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();

idDataGridViewTextBoxColumn.Name = "idDataGridViewTextBoxColumn";

那么你就可以访问这个权,你想要的。

row.Cells["idDataGridViewTextBoxColumn"].Value


Answer 6:

如果你看一下:

row.Cells["xxx"].Value;

这样 :

row.Cells[yourdataGridView.Columns["xxx"].Index].Value;


文章来源: How to get cell value of DataGridView by column name?