簡體   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