数据源绑定时,DataGridView自动排序不起作用

时间:2013-03-15 18:37:20

标签: c# .net winforms datagridview

我的问题是: 当我将数据源绑定到DataGridView

BindingList<Contract> contracts = new BindingList<Contract>(Contract.GetAll());
dgEndingContracts.DataSource = contracts.Where(c => c.ExpirationDate <= nextMonth && c.IsArchived == false).ToList();

并将每列设置为SortMode = DataGridViewColumnSortMode.Automatic 当我点击dataGridView时,标题行不排序。

但是当我手动创建每一列时,每行dataGridView创建并填充数据,并将set column sort模式设置为自动,排序工作正常。

有什么区别,如何在第一种方法中启用排序?

2 个答案:

答案 0 :(得分:53)

我找到了解决方案。

似乎DataGridView无法对List <T>BindingList<T>进行排序

所以我根据code from添加了class SortedBindingList<T>: 现在我的DataGridView可以对列进行排序。

感谢您的帮助。

答案 1 :(得分:1)

.ToList()不返回实现BindingList的东西。 使用类似的东西:

dgEndingContracts.DataSource = new BindingList<Contract>(contracts.Where(c => c.ExpirationDate <= nextMonth && c.IsArchived == false).ToList());