使用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的食谱没有帮助我。

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

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

 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。 您可以看一下如何访问底层模型对象。