2

假设我有一个包含 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 的食谱对我没有帮助。

你有我的例子吗?

4

1 回答 1

3

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

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 字段。

于 2012-12-03T09:12:11.987 回答