devextreme datagrid 数据汇总统计相同数据
devextream data grid Data Summaries Count the same data
我正在使用 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 = [];
}
如果有效请告诉我。
我正在使用 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 = [];
}
如果有效请告诉我。