【发布时间】:2011-09-25 18:47:05
【问题描述】:
当我单击列标题进行排序时,我的列表/集合有什么要求才能在 DataGridView 中进行排序?
【问题讨论】:
标签: c# winforms sorting datagridview datasource
当我单击列标题进行排序时,我的列表/集合有什么要求才能在 DataGridView 中进行排序?
【问题讨论】:
标签: c# winforms sorting datagridview datasource
DataGridView 上此类信息的最佳位置是 MSDN。对于更模糊的问题,下一个呼叫端口是由 DataGridView 的项目经理 Mark Rideout 编写的出色的DataGridView FAQ
在 MSDN 上有一篇关于数据绑定和 DataGridView(包括排序)的非常详尽的文章,标题为 Custom Data Binding。
本质上,当将数据源绑定到 DataGridView 时,只要源实现 IBindingList 并具有支持用于排序的接口方法的代码(例如 SupportsSorting 应返回 true),排序就会自动工作。
一些开箱即用的数据源确实支持排序 - 例如 DataTable,但大多数不支持。
特别是 BindingList,虽然它实现了 IBindingList,但它不支持排序。要使对象列表可排序,您需要创建自己的可排序列表。网上有几个这样的例子,使用从 BindingList 派生的类。搜索 SortableBindingList 找到一个(其实我上面引用的数据绑定文章中有一个例子)。
【讨论】:
为此,您需要深入研究 MSDN 文档。您可以根据需要使用自动/自定义排序。
【讨论】:
来自 msdn 论坛:当您单击数据绑定 DataGridView 中的列标题时,它会调用 IBindingList 上的 ApplySort 方法。您可以覆盖 BindingSource 上的 ApplySort 方法并在那里执行自定义操作。
因此我的列表/集合需要一个 IBindingList impl。
【讨论】: