【问题标题】:Requirement for a list/collection being sortable in a DataGridview列表/集合在 DataGridview 中可排序的要求
【发布时间】:2011-09-25 18:47:05
【问题描述】:

当我单击列标题进行排序时,我的列表/集合有什么要求才能在 DataGridView 中进行排序?

【问题讨论】:

    标签: c# winforms sorting datagridview datasource


    【解决方案1】:

    DataGridView 上此类信息的最佳位置是 MSDN。对于更模糊的问题,下一个呼叫端口是由 DataGridView 的项目经理 Mark Rideout 编写的出色的DataGridView FAQ

    在 MSDN 上有一篇关于数据绑定和 DataGridView(包括排序)的非常详尽的文章,标题为 Custom Data Binding

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

    一些开箱即用的数据源确实支持排序 - 例如 DataTable,但大多数不支持。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • IBindingList 还不够——微软提供的 BindingList 实现了 IBindingList 但不支持排序。 Google for SortableBindingList - 有几个从 BindingList 继承并实现排序行为的示例。
        猜你喜欢
        • 1970-01-01
        • 2014-03-15
        • 2020-08-16
        • 2012-12-08
        • 2018-05-02
        • 1970-01-01
        • 2015-10-31
        • 2016-04-28
        • 2013-05-10
        相关资源
        最近更新 更多