我有一個datagridview,並在構造函數中將Datagrid值綁定爲數據表。DataGridView列順序無法正常工作
我在運行時更改列的順序。我隱藏的一些列和我重新排列的一些列。 (列是動態的,有時候我有10個,有時候我有20列)
隱藏列是不可見的。這很好。但是重新排列的列沒有正確的順序。
我在這裏錯過了什麼嗎?
這裏是我的代碼:
Public Class()
{
myGrid.DataSource = gridDataTable;
}
List<int> columnsOrder; //Order index values
List<string> columnNameFromExcel; // Hiding column strings
private void VisibleColumns()
{
for (int i = 0; i < myGrid.ColumnCount; i++)
{
//Hiding columns based on some logics
if(!columnNameFromExcel.Values.Contains(myGrid.Columns[i].DataPropertyName))
{
myGrid.Columns[i].Visible = false;
}
//Changing the display index
myGrid.Columns[i].DisplayIndex = columnsOrder[i];
}
}
任何幫助將非常感激。
Actual Result:
Column3 Column4 Column5 Column1 Column2
Expected Result:
Column1 Column2 Column3 Column4 Column5
注: 我已經編輯我的問題,以避免混亂。分配顯示索引很好。我在運行時檢查了它。沒有重複。但仍然有些專欄的順序在執行後沒有妥善安排。
目前還不清楚'一些condition'是什麼'columnsOrder'包含?假設它包含所有列的順序例如:列表中的元素0是列0的顯示索引,元素1是列1顯示索引...等等,那麼爲什麼你要循環訪問這個列表。不會簡單地設置MyGrid.Columns [i] .DisplayIndex = columnsOrder [i];'...工作? – JohnG
再一次,目前還不清楚這兩個名單包含什麼。我將不得不猜測'columnsOrder'列表將不得不包含所有的列,否則你怎麼知道ints引用的列?另一方面,可見的列可能只是您想要隱藏的列的列表。 – JohnG
我編輯了我的問題以避免混淆。分配顯示索引很好。我在運行時檢查了它。沒有重複。但是,仍然有些列順序執行後沒有正確安排 –