假设我有一个包含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的食谱对我没有帮助。
你有一个例子可以告诉我如何做到这一点吗?
答案 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有关如何访问基础模型对象的信息。