c# - 使用 ObjectListView 自定义排序

标签 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 上相同。

并且状态不起作用。打开,当我按 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 是 OLVListItem 类型。您可以根据需要访问 RowObject 字段。

关于c# - 使用 ObjectListView 自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634041/

相关文章:

c# - 删除 X 字符后的所有字符

c# - 有没有办法在不按下 Ctrl 键的情况下在 ObjectListView 中进行多选?

c# - ToString 重载中未处理的异常

c# - 解析多个集合并获取单个列表的 LINQ 语句

c# - 如何在 C# 中下载 HTML 源代码

Java:使用相关数组对Arraylist进行排序

algorithm - Batcher 的合并交换排序

python - 使用 list.count 就地使用 .sort() 对列表进行排序不起作用。为什么?

vb.net - ObjectListView - FormatRow 事件不适用于 ForeColor

c# - 如何选择 ObjectListView 中的所有行?