C# 在DataGridview中可排序的列表/集合的要求

C# 在DataGridview中可排序的列表/集合的要求,c#,winforms,sorting,datagridview,datasource,C#,Winforms,Sorting,Datagridview,Datasource,我的列表/集合有哪些要求,以便在单击列标题进行排序时可以在DataGridView中对其进行排序?为此,您需要深入了解MSDN文档。您可以根据需要使用自动/自定义排序 来自msdn论坛:当您单击databound DataGridView中的列标题时,它将调用IBindingList上的ApplySort方法。您可以覆盖BindingSource上的ApplySort方法,并在那里执行自定义操作 因此,我的列表/集合需要一个IBindingList impl。在DataGridView上放置此类

我的列表/集合有哪些要求,以便在单击列标题进行排序时可以在DataGridView中对其进行排序?

为此,您需要深入了解MSDN文档。您可以根据需要使用自动/自定义排序


来自msdn论坛:当您单击databound DataGridView中的列标题时,它将调用IBindingList上的ApplySort方法。您可以覆盖BindingSource上的ApplySort方法,并在那里执行自定义操作


因此,我的列表/集合需要一个IBindingList impl。

在DataGridView上放置此类信息的最佳位置是MSDN。对于更模糊的问题,下一个调用端口是由DataGridView的程序管理器MarkRideout编写的优秀代码

有一篇关于数据绑定和DataGridView(包括MSDN排序)的非常全面的文章

从本质上讲,将数据源绑定到DataGridView时,只要源实现IBindingList并具有用于处理排序的接口方法的支持代码,排序就会自动工作,例如SupportsOrding应返回true

一些现成的数据源确实支持排序,例如DataTable,但大多数不支持


特别是,尽管BindingList实现了IBindingList,但它不支持排序。要使对象列表可排序,您需要创建自己的可排序列表。在web上有几个这样的例子,使用从BindingList派生的类。搜索SortableBindingList以找到一个,事实上我在上面提到的数据绑定文章中有一个例子

IBindingList还不够—microsoft提供的BindingList实现了IBindingList,但不支持排序。Google for SortableBindingList-有几个从BindingList继承并实现排序行为的示例。