我想在网格页脚中添加总行数。我有完整的行记录在商店可用。在网格中,用户选择降序,总行显示为第一行。谁能告诉我如何避免这种情况?
我将解释我的完整问题:
例如,我有像Target Target1 Target2的网格视图来自webservice
Month Target Target1 Target2 Target(2-1) Target%
jan 500 1000 1001 1 0.99
feb 600 2000 2001 1 0.99
**total 1100 3000 3002 2 2*3002/100** need to calculate total% like this
我正在计算值Target(2-1)目标%存储中的总值并将商店绑定到网格中。因此,只有总列也会发生变化。在网格中,用户选择降序,总行也会改变。谁能告诉我如何避免这种情况?
由于
答案 0 :(得分:8)
您应该使用网格摘要功能,而不是常规行。 Here是一个小提琴,它演示了您的示例的用法,并使用自定义的summaryType函数来实现Target%total的计算。
这是一种比将摘要计算作为商店中的记录更好的方法,您不会遇到排序和过滤问题。
查看文档和实例的here。基本上,您需要将该功能添加到网格中,如:
Ext.create('Ext.grid.Panel', {
...
features: [{
ftype: 'summary'
}],
...
并将summaryType配置添加到您需要的列中,例如:
columns: [{
dataIndex: 'name',
text: 'Name',
summaryType: 'sum',
...
这就是自定义summaryType的样子:
dataIndex: 'targetPercent',
text: 'Target%',
summaryType: function(records){
var totals = records.reduce(function(sums, record){
return [sums[0] + record.data.target2,
sums[1] + record.data.targetDiff];
}, [0,0]);
return (totals[0] * totals[1]) / 100;
}