我的问题是: 当我将数据源绑定到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模式设置为自动,排序工作正常。
有什么区别,如何在第一种方法中启用排序?
答案 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());