簡體   English   中英

如何通過列名獲取列索引?

[英]how to get column Index by column name?

我有一個列數很少的數據網格-

網格的標題是超鏈接,我在運行時設置它的值如下-

string strQ1 = "<a href='somePage.aspx?ID=1'>gfgytyty<a>";
dtGrid.Columns[0].Header = strq1;

string strQ2 = "<a href='somePage.aspx?ID=2'>yhtryrtuyu<a>";
dtGrid.Columns[1].Header = strq2;

and so on...

它工作正常。 現在假設我想通過名稱獲取 datatgrid 特定列的索引,但我無法獲取它。 我試過

int  colIndex = dtGrid.Columns.IndexOf(dtGrid.Columns[strQ2]);

這應該返回 1 作為 columnIndex 但它返回 -1,

此外, dtGrid.Columns[strQ2] 給我空值。

我在這里做錯了什么?

您可以先使用 LINQ FirstOrDefault 獲取對象,然后才使用 .IndexOf(object) :

var targetColumn = dtGrid.Columns.FirstOrDefault(c => c.Header == strQ2);
var index = dtGrid.Columns.IndexOf(targetColumn);

這是使用List.FindIndex的另一種方法:

int index = dtGrid.Columns.ToList().FindIndex(c => c.Header  == strQ2);

如果它不是 WPF DataGrid (這似乎是由於Header屬性)而是一個沒有實現泛型集合類型的 winforms DataGridView ,則您需要先對其進行轉換,然后才能使用 LINQ 方法:

var columnList = dtGrid.Columns.Cast<DataGridViewColumn>().ToList();
int index = columnList.FindIndex(c => c.HeaderText  == strQ2);

為什么不呢?

int index = myDataGridView.Columns["myColumn"].Index;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM