如何在extjs中添加网格页脚中的总行数

moh*_*han 4 extjs extjs4.1 sencha-architect

我想在网格页脚中添加总行数.我有完整的行记录在商店可用.在网格中,用户选择降序,总行显示为第一行.谁能告诉我如何避免这种情况?

我将解释我的完整问题:

例如,我有像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   
Run Code Online (Sandbox Code Playgroud)

我正在计算存储中的值Target(2-1)Target%total value并将该商店绑定到网格中.因此,只有总列也会发生变化.在网格中,用户选择降序,总行也会改变.谁能告诉我如何避免这种情况?

谢谢

Ami*_*viv 8

您应该使用网格摘要功能,而不是常规行.是一个小提琴,演示了您的示例的用法,以及自定义summaryType函数,该函数实现了Target%total的计算.

这是一种比将摘要计算作为商店中的记录更好的方法,您不会遇到排序和过滤问题.

看看这里的文档和实例.基本上,您需要将该功能添加到网格中,如:

Ext.create('Ext.grid.Panel', {
    ...
    features: [{
        ftype: 'summary'
    }],
    ...
Run Code Online (Sandbox Code Playgroud)

并将summaryType配置添加到您需要的列中,例如:

columns: [{
    dataIndex: 'name',
    text: 'Name',
    summaryType: 'sum',
...
Run Code Online (Sandbox Code Playgroud)

这就是自定义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;
} 
Run Code Online (Sandbox Code Playgroud)