使用ObjectListView进行自定义排序

时间:2012-11-29 20:20:56

标签: c# sorting objectlistview

假设我有一个包含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上也一样。

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

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

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

1 个答案:

答案 0 :(得分:2)

使用自定义分拣机的示例:

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的类型为ListViewItem。您可以查看this有关如何访问基础模型对象的信息。