Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 从列值之和获取百分比_Extjs_Grid_Extjs5 - Fatal编程技术网

Extjs 从列值之和获取百分比

Extjs 从列值之和获取百分比,extjs,grid,extjs5,Extjs,Grid,Extjs5,在以下示例中,我有一个网格,其中widgetcolumn占另一列总值的百分比: 小提琴: 但是,我无法打印widgetcolumn 我需要在前一列中获得完全相同的前一个值 你知道如何在没有dataindex配置和客户端的情况下做到这一点吗?你能解释一下为什么不想使用dataindex配置吗 我找到了解决办法,但这是一个丑陋的解决方案。我不建议在生产环境中使用它。这是小提琴: 简而言之,您需要计算所有值的总和,并将其保持在渲染器之外。在每次渲染时,计算百分比并根据需要设置格式 renderer:

在以下示例中,我有一个网格,其中widgetcolumn占另一列总值的百分比:

小提琴:

但是,我无法打印widgetcolumn

我需要在前一列中获得完全相同的前一个值


你知道如何在没有dataindex配置和客户端的情况下做到这一点吗?

你能解释一下为什么不想使用dataindex配置吗

我找到了解决办法,但这是一个丑陋的解决方案。我不建议在生产环境中使用它。这是小提琴:

简而言之,您需要计算所有值的总和,并将其保持在渲染器之外。在每次渲染时,计算百分比并根据需要设置格式

renderer: function (value, metaData, record, rowIndex, colIndex, store) {
        var me = this;

        if (me.sum === 0) {
            store.getRange().forEach(function(rec) {
                me.sum += rec.get('value');
            } );
        }

        return Ext.util.Format.round(100*record.get('value')/me.sum, 0);
    }

将总和存储在
me
上没有意义。你为什么这么认为
me
是组件对象。我数了一次总数并保存了它。这比每次遍历存储区要好。我认为您应该在存储区中保留总和,并附加一个datachanged侦听器,以便在存储区内容更改时重新计算总和。这是最好的方法。当我答对问题后,我们只能更改渲染器函数。@Nikolai谢谢。如果可能的话,我想在客户端进行这些百分比计算,在我的例子中可以使用任何使用渲染器函数的解决方案或其他解决方案。我正在研究您的解决方案,这似乎是一个可能的解决方案,而且似乎效果良好。