如何在extjs的网格页脚中添加总行 [英] How to add total row in grid footer in extjs

查看:12
本文介绍了如何在extjs的网格页脚中添加总行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to add total row in grid footer. I have total row that record is available in store. In grid the user selects descending order, total row appears as the first row. Can anybody tell me how to avoid this?

我将解释我的全部问题:

I will explain my full problem:

例如我有网格视图,如 Target Target1 Target2 are getting from webservice

eg I have grid view like Target Target1 Target2 are getting from 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) Target% total value in store 并将 store 绑定到网格中.所以只有总列也会发生变化.在网格中用户选择降序,总行也会改变.谁能告诉我如何避免这种情况?

I am calculating the value Target(2-1) Target% total value in store and bind the store in grid. So only the total column also changes. In grid the user selects descending order, total row also changes. Can anybody tell me how to avoid this?

谢谢

推荐答案

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

You should use the grid summary feature, instead of a regular row. Here is a fiddle that demonstrates the usage with your example, and with custom summaryType function that implements the calculation for your Target% total.

这种方法比在store中做一个记录做汇总计算更好,不会在排序和过滤时遇到麻烦.

This is a better method than to do the summary calculation as a record in the store, you will not get into trouble with sorting and filtering.

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

Have a look here for documantation and live example. Basically, you need to add the feature to the grid like:

Ext.create('Ext.grid.Panel', {
    ...
    features: [{
        ftype: 'summary'
    }],
    ...

并在您需要的列中添加一个 summaryType 配置,例如:

And add a summaryType config to the columns you need, like:

columns: [{
    dataIndex: 'name',
    text: 'Name',
    summaryType: 'sum',
...

这就是自定义 summaryType 的样子:

And this is how the custom summaryType looks like:

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;
} 

这篇关于如何在extjs的网格页脚中添加总行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆