【问题标题】:Custom Sorting with ObjectListView使用 ObjectListView 自定义排序
【发布时间】:2012-11-18 00:20:17
【问题描述】:

假设我有一个包含 3 列的 objectListView

ArticleNumber | OrderNumber | Status
 8080         | 123.456.789 | Delivered
 80           | 456.789.101 | Pending
 901          | 11.111.111  | Delivered

使用自动排序,较小的文章编号将排在较大的文章编号之下,因此它会排序 8080、80、901 或 901、80、8080,但我希望最小的数字在顶部。

OrderNumber 上相同。

而且状态不起作用。开,它只是在我按下 ColumnHeader 时对 ArticleNumber 进行排序,所以我想根据文本对 Status 进行排序。

我认为我需要一个 CustomSorter 来完成该任务,但我找不到如何使用它,也找不到一个很好的例子,OLV 的食谱对我没有帮助。

你有一个例子可以告诉我如何做到这一点吗?

【问题讨论】:

标签: c# sorting objectlistview


【解决方案1】:

使用自定义排序器的示例:

MyOlv.CustomSorter = delegate(OLVColumn column, SortOrder order) {
    // check which column is about to be sorted and set your custom comparer
    if (column == ArticleNumber) {
        MyOlv.ListViewItemSorter = new ArticleNumberComparer(order);
    }
};          

class ArticleNumberComparer : IComparer {
    SortOrder _Order;
    
    public ArticleNumberComparer(SortOrder order) {
        _Order = order;
    }

    public int Compare(object x, object y) {
         // perform you desired comparison depending on the _Order
    }
}

请注意,Compare() 中的 x 和 y 属于 OLVListItem 类型。您可以根据需要访问 RowObject 字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多