【问题标题】:Sort multiple columns while using a bindingsource or bindinglist在使用 bindingsource 或 bindinglist 时对多个列进行排序
【发布时间】:2011-01-25 03:37:14
【问题描述】:

我正在尝试解决一个问题,它正在对多个列上的 DataGridView 进行排序。我读过这个选项不是 DataGridView 内置的功能,我必须实现它。我找到了多种解决方案,但没有一个完全可以完成这项工作。

我也是 C# 的新手,我不太了解 .Net 库。我还在 MSDN 网站上阅读了有关可能有用但没有成功的不同类的信息。

现在,让我们进入正题。我有一个 DataGridView,带有一个我想要排序的 BindingList(最初是一个 BindingSource),但是通过多个键。我的 DataGrid 有 9 列,用户应该能够对任何列进行排序。例如,假设我的 Datagrid 有 3 列,命名为:索引、ID、名称。用户希望按名称排序,隐含地,下一个顺序是索引,然后是 ID。因此,如果 2 个名称相同,索引应该是下一个排序选项。

任何想法如何做到这一点?

【问题讨论】:

    标签: c# data-binding datagridview sorting multiple-columns


    【解决方案1】:

    BindingSource 对象有一个 Sort 属性,可让您按所需的任何属性对其对象集合进行排序,就像 SQL 中的 ORDER BY 子句一样。排序后,我认为您可能应该通过 Refresh() 方法刷新 DataGridView。

    你试过了吗?

    【讨论】:

    • 这正是我要建议的。我想我可以补充一点细节。基本上,一旦用户单击要排序的标题,您就可以使用鼠标单击事件处理程序捕获此事件。然后更新 Datagrids 视图。
    • 感谢您的评论!然后确认这是一个好方法。两个头比一个好! =)
    • 好吧,我并没有完全尝试过,但它似乎无法解决我的问题。我举个例子。我有 2 个条目,分别是“2, 10, A Book”和“1, 11, D Book”。如果用户单击名称列标题,条目将保持相同的顺序。就我而言,我希望索引为 1 的第二个条目首先出现,给出如下内容: ORDER BY '用户点击的列标题'、'最左边的其他列'等。
    • 有一个事件可以引发 ColumnHeader_Click() 或类似的东西。在此代码中,您可以订购 BindingSource 然后 Refresh() 显示。
    猜你喜欢
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    相关资源
    最近更新 更多