繁体   English   中英

datagridview 列索引

[英]datagridview column index

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

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

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

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

datagridview1.Columns["columnName"]

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

datagridview1.Columns["columnName"].Index;

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

如果我是对的, e.ColumnIndex也适用于此。 你可以在这里查看 MSDN 文档

您可以使用DataGridViewColumn 小部件的 Index 属性获取索引,如下所示:

ColumnName.Index

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

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

在代码下面创建一个 static class

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");

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

datagridview1.Columns[column1.Name].Index;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM