javascript - devextream 数据网格 数据摘要 计算相同的数据
问题描述
我正在使用 DevExtreme 并想使用汇总功能。如果同一列有相同的数据,则统计
let te_arr = [];
dxDataGrid({
..................
columns: [
{ dataField: "columnsTest", caption: "columnsTest"}
],
summary: {
recalculateWhileEditing: true,
totalItems: [
{
name: "SelectedRowsSummary",
showInColumn: "columnsTest",
displayFormat: "count: {0}",
summaryType: "custom"
}],
calculateCustomSummary: function (options) {
if(options.value){
let data_state = options.value.columndata
console.log('data_state ',data_state );
if (options.name == "SelectedRowsSummary") {
if (options.summaryProcess === "start") {
options.totalValue = 0;
}
if (options.summaryProcess === "calculate") {
if (data_state == 'Y') {
te_arr.push(data_state );
options.totalValue = te_arr.length;
}
}
}
}
}
},
.................
上面的结果是计数 7 结果你得到了相同数据的总计数,但是当像网格按钮 desc 或 asc 这样的事件被处理时,这个数字加倍。看起来是这样,因为 calculateCustomSummary 已完成,之后它会在事件发生时继续触发。应该如何处理?
解决方案
您使用的概念是正确的-您分配总值的方式包含一个小错误-至少从我对您提供的代码的理解来看。
你定义了数组 let te_arr = []; 超出了 calculateCustomSummary 处理程序的范围,并且只有在满足所有条件时才将 data_state 推送给它。
但是您没有为每个 calculateCustomSummary 执行清除 te_arr。这就是为什么在一个事件之后你有 7 个,而在下一个事件之后你有 14 个。当 calculateCustomSummary 摘要开始时,尝试修改你的 if 语句:
if (options.summaryProcess === "start") {
options.totalValue = 0;
te_arr = [];
}
请让我知道它是否有效。
推荐阅读
- node.js - 如何在 db2 的 nodejs 中使自动提交为假?
- python - 将具有混合整数的列拆分为多个列的元组
- ios - 从 ios 中的文档选择器中选择文件时如何防止编辑文件(重命名、共享等)
- amazon-web-services - 在无服务器框架中的函数之间共享新的 AWS HTTP API
- azure - 使用 REST API 将文件上传到 onedrive
- c# - 在 ByteArray 中定位子数组
- vba - 使用 VBA 进行 AIP 分类
- scala - 不兼容的 Jackson 版本:2.10.2 关于尝试在 spark 中创建 Rdd of Row
- php - SimpleXML:根据子元素的内容选择父节点
- python - 1d 数组到 2d numpy 数组的系列