[英]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.