首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过列名获取DataGridView的单元格值?

如何通过列名获取DataGridView的单元格值?
EN

Stack Overflow用户
提问于 2012-11-18 01:15:57
回答 8查看 91.7K关注 0票数 27

我有一个带有WinForms的DataGridView应用程序,DataSource是一个DataTable (由Server填充),它有一个xxx列。下面的代码引发

ArgumentException未被处理。找不到名为xxx的列。

代码语言:javascript
复制
foreach (DataGridViewRow row in Rows)
{
    if (object.Equals(row.Cells["xxx"].Value, 123))
}

是否可以按列名获取单元格值?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-11-18 01:54:06

DataGridViewColumn对象具有一个Name (仅在forms中显示)和一个HeaderText (在列顶部的GUI中显示)属性。示例中的索引器使用了该列的Name属性,因此由于您说该属性不起作用,所以我假设您确实在尝试使用该列的标题。

没有任何内置的东西可以满足您的需要,但是它很容易添加。我会使用一种扩展方法来使它更容易使用:

代码语言:javascript
复制
public static class DataGridHelper
{
    public static object GetCellValueFromColumnHeader(this DataGridViewCellCollection CellCollection, string HeaderText)
    {
        return CellCollection.Cast<DataGridViewCell>().First(c => c.OwningColumn.HeaderText == HeaderText).Value;            
    }
}

然后在你的代码中:

代码语言:javascript
复制
foreach (DataGridViewRow row in Rows)
{
    if (object.Equals(row.Cells.GetCellValueFromColumnHeader("xxx"), 123))
    {
        // ...
    }
 }
票数 27
EN

Stack Overflow用户

发布于 2016-03-09 04:25:50

通过这样做,您将能够访问当前选定的行的"xxx“列名的单元格。

代码语言:javascript
复制
dataGridView1.SelectedRows[0].Cells["xxx"]
票数 14
EN

Stack Overflow用户

发布于 2013-12-09 15:43:07

是的,只需删除引号并添加.Index,即

代码语言:javascript
复制
foreach (DataGridViewRow row in Rows)
{
    if (object.Equals(row.Cells[xxx.Index].Value, 123)) 

...that是指如果您的列真正名为xxx,而不是其他名称(如Column1等)。您可以独立设置列名和列标题,因此可以在设计器中签入。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13436553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档