AGGrid-聚合,过滤

时间:2020-01-16 16:01:41

标签: ag-grid

在agGrid中,我有一个基于两列的聚合。当我应用过滤器时,基于两列的聚合不会更新。 sum,max,min集合函数没有问题,因为所有这些函数均基于同一列。

这是我遵循的步骤, 按列分组->值汇总->加权平均(自定义汇总)->添加过滤器。

在加权平均值聚合计算之后添加过滤器时,不会刷新新的加权平均值。

我使用valueGetter函数计算了此总计(如下面的代码所示)。

当我修改过滤器时,是否有一种方法可以更新来自valueGetter函数的聚合?

谢谢。

关于, 维杰。

function weightedAverageGetter(params) {
        var col = params.column.colId.split('.')[1];
        var value = 0;
        if (params.data){
            value = params.data.qli?params.data.qli[col]:0;
            if (col == 'P1prime__c' || col == 'P2Prime__c'){
                value = Math.ceil(value);
            }
        }

        var avgW = 0;
        if (params.node){
            var sumVal = 0;
            var sumQty = 0;
            for (var node in params.node.allLeafChildren){
                var nodeValue = params.node.allLeafChildren[node];
                var val = 0;
                var qty = 0;
                if (nodeValue.data){
                    val = nodeValue.data.qli?nodeValue.data.qli[col]:0;
                    qty = nodeValue.data.qli?parseFloat(nodeValue.data.qli.Quantity):0;
                }
                if (typeof val !=='undefined' && val != '' && typeof qty !=='undefined' && qty != '') {
                    sumQty += qty;
                    sumVal += qty*val;
                }
            }
            avgW = sumVal/sumQty;
        }

        avgW = Math.round(avgW * 100) / 100;

        if(!params.column.aggregationActive || Number.isNaN(avgW)){
            avgW = '';
        }
        return params.data?value:avgW;
    }

0 个答案:

没有答案
相关问题