假设我有一个包含 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/