我有一个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
我编辑了我的问题以避免混淆。分配显示索引很好。我在运行时检查了它。没有重复。但是,仍然有些列顺序执行后没有正确安排 –