我有一个包含列标题的排序列表,如何重新排列我的datagridview,使其与我的排序列表的顺序相同?
我已经尝试了下面的代码,但这并不总是有效,有些列没有正确排序。感谢您对此的任何帮助。
sortedColumnNames.Sort();
foreach (DataGridViewColumn col in dataGridView1.Columns)
{
col.DisplayIndex = sortedColumnNames.IndexOf(col.HeaderText);
}
sortedColumnNames: 雅典 克里特岛 科孚岛 凯法利尼亚 米科诺斯 罗兹 圣托里尼 斯亚索斯 桑特岛
答案 0 :(得分:3)
我无法判断您的问题是SortedColumnNames
是否排序不正确(不是这样),或者是否为列分配了与列表中显示的顺序不同的顺序。
如果是后者,它可能可以想象因为你正在迭代它时修改集合中项目的顺序。虽然我没有在我正在运行的任何测试中看到这种情况。
正如一般规则,我不会弄乱我正在迭代的集合的成员或顺序。我用这种方式实现了列排序:
void SortDataGridViewColumns(DataGridView dgv)
{
var list = from DataGridViewColumn c in dgv.Columns
orderby c.HeaderText
select c;
int i = 0;
foreach (DataGridViewColumn c in list)
{
c.DisplayIndex = i++;
}
}
答案 1 :(得分:0)
似乎应该有用。我刚刚写了一个快速应用程序进行测试,它运行良好。你可以准确地确定它什么时候工作,什么时候不工作?如果你说它们不起作用,它是否总是与乱序的列相同?
答案 2 :(得分:0)
你可以这样做:
这不太理想,但它确实有效。