datagridview 列索引

Posted

技术标签:

【中文标题】datagridview 列索引【英文标题】:datagridview column index 【发布时间】:2011-09-30 21:01:08 【问题描述】:

我有一个带有DataGridView 小部件的表单,我需要获取具有所选名称的列的索引。

例如,假设我有一个包含 2 列的表:姓名、姓氏。我需要一种方法来获取列名的索引。问题是它一直根据DataSource 而变化,但该列始终具有相同的名称“名称”。

有谁知道如何解决这个问题?

【问题讨论】:

【参考方案1】:

我发现使用列对象的 Name 属性比使用列名作为字符串更安全,因为这样可以在将来进行更一致的代码重构。

datagridview1.Columns[column1.Name].Index;

此外,重要的是首先确保该列不为空,并且正如其他人所说,它包含在 datagridview 中。

【讨论】:

【参考方案2】:

在代码下面创建一个静态类

public static class MyTools

    public static int IndexByName(this DataGridView dgv, string name)
    
        foreach(DataGridViewColumn col in dgv.Columns)
        
            if(col.HeaderText.ToUpper().Trim() == name.ToUpper().Trim())
            
                return col.Index;
            
        
        return -1;
    

然后用你的 dataGridView 调用它

int index = datagridview1.IndexByName("columnName");

【讨论】:

【参考方案3】:

可以通过the Index property of the DataGridViewColumn widget获取索引,如下:

ColumnName.Index

这避免了在运行时检查列名是否有效的需要,因为如果列不存在则会产生编译错误。这也使重构更容易。

我建议您给列起一个合理的名称(例如DCOL_SomeName),以便您可以轻松区分它们。如果您在同一个表单上有多个 DataGridView 小部件,包括 DataGridView 小部件的名称会有所帮助。

【讨论】:

【参考方案4】:

要按名称检索DataGridView 列,您只需通过列集合索引器引用它:

datagridview1.Columns["columnName"]

然后就可以从该列获取列索引:

datagridview1.Columns["columnName"].Index;

请注意,如果您使用无效的列名,则此引用将返回 null,因此您可能需要在使用之前检查列引用不为 null,或者先使用列集合 .Contains() 方法。

【讨论】:

为了安全起见(对于其他用户),您应该首先检查该列是否存在:datagridview1.Columns.Contains("ColumnName") @ginalster 谢谢 - 好点,我已将其添加到答案中。【参考方案5】:

如果我是对的,e.ColumnIndex 也可以解决这个问题。你可以查看 MSDN 文档 here

【讨论】:

以上是关于datagridview 列索引的主要内容,如果未能解决你的问题,请参考以下文章

c# winform编程 数据库 .net 怎么获取datagridview中选中列的列索引?

2 列索引与 3 列索引的性能方面

pandas使用read_csv函数读取csv数据header参数指定作为列索引的行索引列表形成复合(多层)列索引使用方括号[]基于最外层列索引名称索引列数据

winform中获取datagridview如何获取选中的行,返回值object

pandas读取csv数据header参数指定作为列索引的行索引列表形成复合(多层)列索引使用set_index函数把数据列转化为行索引(keys参数指定需要被转化的层列索引)

pandas读取csv数据header参数指定作为列索引的行索引列表形成复合(多层)列索引使用set_index函数把数据列转化为行索引(keys参数指定需要被转化的层列索引)