使用 wijmo ICollectionView 进行多次 level/criteria 排序

Multiple level/criteria sorting using wijmo ICollectionView

Wijmo 是否具有在第一个搜索条件匹配的情况下添加额外排序级别的功能?此辅助搜索仅在主要条件匹配的情况下使用。

例如,如果我的两列是“州”和“城镇”,我想按升序对州进行排序,但对这些州内的城镇进行降序排序。所以我的列表可能是这样的

NV |拉斯维加斯

NV |伊利

纽约 |萨拉托加

纽约 |纽约市

纽约 |奥尔巴尼

排序由 CollectionView class 在数据源级别执行。 CollectionView 有一个 "sortDescriptors" 属性 ,它是一个数组。您可以根据需要添加任意数量的排序级别。例如:

// raw data
var data = [
  { state: 'NV', town: 'Las Vegas' },
  { state: 'NY', town: 'Saratoga' },
  // ... more data ...
];

// CollectionView
var view = new wijmo.collections.CollectionView(data);

// sort by state, then by town
var sd = view.sortDescriptions;
sd.push(new wijmo.collections.SortDescription('state', true));
sd.push(new wijmo.collections.SortDescription('town', true));

现在您可以使用 "view" 对象作为网格的数据源。

请注意,如果您不使用 CollectionView,FlexGrid 会自动创建一个供内部使用(因此它可以对数据等进行排序)。此内部 CollectionView 通过网格的 "collectionView" 属性 公开。所以你也可以这样做:

// bind grid to raw data (creates internal CollectionView automatically)
grid.itemsSource = data;

// sort the grid's CollectionView
var sd = grid.collectionView.sortDescriptions;
sd.push(new wijmo.collections.SortDescriptor('state', true));
sd.push(new wijmo.collections.SortDescriptor('town', true));

希望对您有所帮助。有关 CollectionView class 的更多信息,请查看此 link:

https://wijmo.com/5/docs/topic/wijmo.collections.CollectionView.Class.html

希望对您有所帮助。