20

我的问题是:当我将数据源绑定到 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的每一行创建和填充数据,并将列排序模式设置为自动,排序工作正常。

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

4

2 回答 2

69

我找到了解决方案。

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

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

谢谢你们的帮助。

于 2013-03-15T19:32:31.910 回答
2

.ToList() 不返回实现 IBindingList 的内容。使用一些东西,比如:

dgEndingContracts.DataSource = new BindingList<Contract>(contracts.Where(c => c.ExpirationDate <= nextMonth && c.IsArchived == false).ToList());
于 2013-03-15T18:59:50.340 回答