如何在DataGridView中通过列索引找到列名?

30

我想在 DataGridView 中找到列名。

我已经有了列索引。 我如何找到它的列名。

dGVTransGrid.CurrentCell.ColumnIndex:我想要它的列名。

请帮忙。

谢谢。

7个回答

51

可能有更好的方法,但为什么不直接询问DataGridView该索引列的名称呢?

int columnIndex = dGVTransGrid.CurrentCell.ColumnIndex;
string columnName = dGVTransGrid.Columns[columnIndex].Name;

如果(dGVTransGrid.CurrentCell!=null && dGVTransGrid.CurrentCell.OwningColumn.Name.ToString() == "Rate") - Nagendra Kumar
2
@Nagendra:既然Name已经是字符串了,为什么还要调用ToString()方法呢? - Jon Skeet
3
因为现在他已经百分之二百确定他提取了那个名字。 - apocalypse

17

发现了一种更简单的方法,只需要一行代码。

[datagrid].CurrentCell.OwningColumn.Name

希望它有所帮助。

敬礼, Eric Estrada Gomez


3
如果你想在单元格被点击时实现动态效果,那么你可以从事件中获取它。
private void dataGridViewName_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    String columnName = this.dataGridViewName.Columns[e.ColumnIndex].Name;

}

1
for (var i = 0; i < DataGridView.ColumnCount; i++)
var name = DataGridView.Columns[i].HeaderText;

这是一种简单的方法。

1

在一行代码中

String name = dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].Name;

0

我觉得我回答有点晚了, 我也遇到了同样的需求,然后找到了这个查询。我尝试了下面的代码片段,它对我有效:

既然你说你知道索引,那么你可以使用下面的代码片段。 如果你已经有一个索引号,那么你可以直接根据该索引号获取列名。

Dim index As Integer = 0 
Dim grid As DataGridView
Dim colName As String = grid.ColumnFields(index).HeaderText

如果您不知道索引编号,可以使用下面的代码片段。

Dim colIndex As Integer = 0
Dim colName As String = "" 
Dim grid As DataGridView
For index As Integer = 0 To grid.ColumnFields.Length - 1
    If grid.ColumnFields(index).HeaderText = colName Then
        colIndex = index
        Exit For
    End If
Next

-1

这可能会对你有所帮助:

String s = dataGridView1.Columns[Index].HeaderText;

2
这是不正确的 - 列名和标题文本不必相同。 - Ken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接