Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用SlickGrid和DataView在不分组的情况下计算求和?

如何使用SlickGrid和DataView在不分组的情况下计算求和?
EN

Stack Overflow用户
提问于 2013-12-24 01:02:11
回答 1查看 1.5K关注 0票数 0

我正在尝试使用Slick Grid和DataView来计算列总数,如本例中的http://mleibman.github.io/SlickGrid/examples/example-grouping。但是,我不想对行进行分组,所以我尽量不向dataView.setGrouping(..)传递getter和formatter。方法,但在我的表中,它显示了文本为'undefined‘的分组行。它确实正确地计算了我的总数。如何删除不必要的分组行?

这就是我正在尝试的:

代码语言:javascript
运行
AI代码解释
复制
dataView.setGrouping({
    aggregators: [
        new Slick.Data.Aggregators.Sum('someField1'),
        new Slick.Data.Aggregators.Sum('someField2')
    ]
});
EN

回答 1

Stack Overflow用户

发布于 2015-05-21 19:49:30

因此,对于“如何在没有分组的情况下计算总和”的问题,我知道这个问题很老了,但是由于我必须自己做,并且找不到任何有效的方法,我决定花一些时间来解决这个问题,现在我分享我的解决方案。SlickGrid的代码只会在分组后计算总和,我猜这就是聚合器的作用,但我深入研究了DataView代码,并提出了一个解决方案,它只有几行代码,但它工作得很好,并且使用了你已经知道的和已经定义的巧妙的聚合器。我从DataView获取了两个函数,其中一些是私有的,这就是为什么你需要在你的代码中重新复制它的原因。所以最后的代码是一个函数名CalculateTotalByAggregator(),它将在内部调用另外两个函数。

注意:注意dataview.getItems()dataview必须来自您的代码,并且可能拼写不同。

代码语言:javascript
运行
AI代码解释
复制
/** Calculate the total of an existing field from the datagrid 
 * @param object aggregator
 * @return mixed total
 */
function CalculateTotalByAggregator(agg) {
  var constructorName = agg.constructor.name; // get constructor name, ex.: SumAggregator
  var type = constructorName.replace(/aggregator/gi, '').toLowerCase(); // remove the word Aggregator and make it lower case, ex.: SumAggregator -> sum

  var totals = new Slick.GroupTotals();
  var fn = compileAccumulatorLoop(agg);
  fn.call(agg, dataview.getItems());
  agg.storeResult(totals);

  return totals[type][agg.field_];
}

/** This function comes from SlickGrid DataView but was slightly adapted for our usage */
function compileAccumulatorLoop(aggregator) {
  aggregator.init();
  var accumulatorInfo = getFunctionInfo(aggregator.accumulate);
  var fn = new Function(
      "_items",
      " for (var " + accumulatorInfo.params[0] + ", _i=0, _il=_items.length; _i<_il; _i++) {" +
          accumulatorInfo.params[0] + " = _items[_i]; " +
          accumulatorInfo.body +
      "}"
  );
  fn.displayName = "compiledAccumulatorLoop";
  return fn;
}

/** This function comes from Slick DataView, but since it's a private function, you will need to copy it in your own code */
function getFunctionInfo(fn) {
  var fnRegex = /^function[^(]*\(([^)]*)\)\s*{([\s\S]*)}$/;
  var matches = fn.toString().match(fnRegex);
  return {
    params: matches[1].split(","),
    body: matches[2]
  };
}

然后在客户端,您只需要调用CalculateTotalByAggregator(agg)函数和一个有效的Slick.Aggregators对象,例如:

代码语言:javascript
运行
AI代码解释
复制
// use any valid Slick Aggregator object and pass it to the function
var agg = new Slick.Data.Aggregators.Sum("Hours");
var totalHours = gridObject.CalculateTotalByAggregator(agg);

// or on a 1 liner
var totalHours = gridObject.CalculateTotalByAggregator(new Slick.Data.Aggregators.Sum("Hours"));

这只是几行代码,但在这种方式下,不需要重写一个函数来做求和,另一个函数做平均,等等。您只需使用您已经在使用的灵活的聚合器,就可以了。简单:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20753455

复制
相关文章
R语言·如何实现分组&有序累计求和
问题:依据group分组,按照dat(日期)升序对num列数据累计求和并生成cum_num列
拴小林
2021/01/12
3.8K0
awk分组求和分组统计次数
如果第一列相同,则根据第一列来分组,分别打印第二列和第三列的和 如果第一列相同,则根据第一列来分组,分别打印第二列和第三列的和 分组求和 image.png 以第一列 为变量名  第一列为变量,将相同第一列的第二列数据进行累加打印出和. image.png image.png 以第一列和第二列为变量名, 将相同第一列、第二列的第三列数据进行累加打印出和 image.png image.png
用户8639654
2021/08/10
1.9K0
sql对多个条件进行分组求和_分组求和法例题附答案
大家好,又见面了,我是你们的朋友全栈君。 在ireport中实现分组,求和。效果如下 name total A 2 A 3 subtotal 5 B 4 B 5 subtotal 9 添加Document–>Variables–>Variable Name 建立自定义的求和函数 设置相关属性。 Calculation 设置为sum reset type为report Reset group 选择自己创建的分组。 increment type 为Group Variable Expression填写你要累计的对象表达式。 new Integer($F{rxNo}) Initial Value Expression处填写数据类型的初始化对象。 new java.lang.Integer(0)
全栈程序员站长
2022/10/03
2.9K0
PowerBI DAX 在矩阵分组区域内通用积累求和
我们在此前多次提到视图层计算,其通用思维模式其实已经给出,真正的正式给出也呼之欲出,我们会单独发文。
BI佐罗
2020/09/28
2.8K0
PowerBI DAX 在矩阵分组区域内通用积累求和
使用JPA原生SQL查询在不绑定实体的情况下检索数据
在这篇博客文章中,我将与大家分享我在学习过程中编写的JPA原生SQL查询代码。这段代码演示了如何使用JPA进行数据库查询,而无需将数据绑定到实体对象。通过本文,你将了解如何使用原生SQL查询从数据库中高效地检索数据。
高久峰
2023/08/07
9360
在公司制度不规范的情况下,如何做好测试工作?
遇到这个好机会你还在等什么?如果说这个公司已经足够好了,那他还请你过来做什么?你的能力还足以让公司有更高的提升么?
软件测试君
2019/11/04
1.3K0
在不更换耳机的情况下,如何让敌人脚步声非常清脆?
1、点击[扬声器] 2、点击[声音] 3、点击[播放] 4、点击[扬声器] 5、点击[属性] 6、点击[增强] 7、点击[环境] 8、点击[设置] 9、点击[铺地毯的走廊] 10、点击[确定]
裴来凡
2022/05/28
9350
在不更换耳机的情况下,如何让敌人脚步声非常清脆?
在不确定列号的情况下如何使用Vlookup查找
合计之外的每一个单元格 都需要引用 除了最基础的等于=引用 我们还有一种更加万能的Vlookup+Match的方法 这样无论日期怎么变化 无论日期顺序是否能对上 我们都不用更改公式
但老师
2022/03/22
2.6K0
在不确定列号的情况下如何使用Vlookup查找
PHP递归求和计算1加到n的和
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/111675.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/18
6330
在C#中ref和out具体怎么使用?在什么情况下使用?
ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。   使用ref前必须对变量赋值,out不用。   out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,ref引用的可以修改,也可以不修改。   区别可以参看下面的代码应该就明白了:
zls365
2020/08/19
2.9K0
laravel ORM分组求和(多个字段),并按结果再次求和并排序
按照用户分组,并把该用户的所有unknown字段和important字段分别求和,最后按照该用户的sum(unknown)与sum(important)之和排序取前十。
躺平程序员老修
2023/09/05
6630
laravel ORM分组求和(多个字段),并按结果再次求和并排序
awk 列求和计算
说明: [分隔符]:一般为“\t”制表符,具体视格式而定 [列数]:统计的列数索引,从1开始
莫斯
2020/09/10
1.6K0
打印PPT和照片时,在保证清晰的情况下如何节约纸张?
1、按<Ctrl+P>键 2、点击[整页幻灯片] 3、点击[9张水平放置的幻灯片] 4、点击[打印]
裴来凡
2022/05/28
5070
打印PPT和照片时,在保证清晰的情况下如何节约纸张?
证明RSA算法在明文和公私钥中N不互质情况下仍然成立
假设公钥 (e, N) , 私钥 (d, N) ,那么 ed = k * g (N) + 1 , g是欧拉函数,假设 N = p * q ,p 和 q 都是 大素数, 那么 g (N) = ( p - 1 ) * ( q - 1 ) , k 是自然数
执生
2020/10/23
1K0
js 数组封装方法实现类似sql的groupBy分组求和。
分组求和 function GroupBy(datas,keys,callBack) { const list = datas || []; const groups = []; list.forEach(v => { const key = {}; const data = {}; keys.forEach(k => {
易兒善
2019/02/22
3.7K0
js 数组封装方法实现类似sql的groupBy分组求和。
matlab循环求和_r语言for循环计算求和
编写程序求和 S=a+aa+aaa+aaaa+…,其中a 是1-9 中的一个数字。n 为一正整数, a 和n均从键盘输入。(例如输入n 为4,a 为2,S=2+22+222+2222)
全栈程序员站长
2022/11/08
1.2K0
【DB笔试面试599】在Oracle中,如何在不执行SQL的情况下获取执行计划?
♣ 题目部分 在Oracle中,如何在不执行SQL的情况下获取执行计划? ♣ 答案部分 1、“EXPLAIN PLAN FOR SQL”不实际执行SQL语句,生成的计划未必是真实执行的计划。但是,必
AiDBA宝典
2019/09/29
2.6K0
Blob、File、ArrayBuffer、TypedArray、DataView究竟应该如何应用
Blob、File、ArrayBuffer、TypedArray、DataView、Object URL ..等等 Web 应用中有关于进制的应用你了解多少?
19组清风
2022/05/11
1.9K0
Blob、File、ArrayBuffer、TypedArray、DataView究竟应该如何应用
点击加载更多

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档