ExtJS 6.2 根据摘要行对网格面板分组进行排序
ExtJS 6.2 Sort grid Panel groupings based on summary row
我花了好几个小时来弄清楚如何做到这一点。基本上我想做的是基于一列对数据进行分组,为该分组创建一个摘要,然后根据摘要对组进行排序。
使用他们的一个厨房水槽示例,我希望能够按汇总价值率对这些组进行排序。
http://examples.sencha.com/extjs/6.0.0/examples/classic/grid/group-summary-grid.html
这可以使用 grouper 和 sorterFn 来完成。 sorterFn 应该比较您作为排序依据的汇总值。对于您提到的厨房水槽示例,如果您想按 estimate 列的总和排序,同时按 project 列分组,石斑鱼会看起来像:
groupers: [{
property: 'project',
sorterFn: function(a,b) {
var suma=0; store.each(function (rec) { suma += rec.data.project === a.data.project ? rec.data.estimate:0; });
var sumb=0; store.each(function (rec) { sumb += rec.data.project === b.data.project ? rec.data.estimate:0; });
if (suma > sumb) return 1;
if (suma < sumb) return -1;
return 0;
}
}]
可以使用石斑鱼:
store.group(store.groupers[0]);
我花了好几个小时来弄清楚如何做到这一点。基本上我想做的是基于一列对数据进行分组,为该分组创建一个摘要,然后根据摘要对组进行排序。
使用他们的一个厨房水槽示例,我希望能够按汇总价值率对这些组进行排序。
http://examples.sencha.com/extjs/6.0.0/examples/classic/grid/group-summary-grid.html
这可以使用 grouper 和 sorterFn 来完成。 sorterFn 应该比较您作为排序依据的汇总值。对于您提到的厨房水槽示例,如果您想按 estimate 列的总和排序,同时按 project 列分组,石斑鱼会看起来像:
groupers: [{
property: 'project',
sorterFn: function(a,b) {
var suma=0; store.each(function (rec) { suma += rec.data.project === a.data.project ? rec.data.estimate:0; });
var sumb=0; store.each(function (rec) { sumb += rec.data.project === b.data.project ? rec.data.estimate:0; });
if (suma > sumb) return 1;
if (suma < sumb) return -1;
return 0;
}
}]
可以使用石斑鱼:
store.group(store.groupers[0]);