在ag-grid中对于行分组为True的列进行汇总聚合,可以使用ag-grid中的groupRowAggNodes和getGroupAggFunction方法进行实现。
示例代码:
//定义聚合函数 function sumAggFunction (values) { var sum = 0; values.forEach(function(value) { sum += parseFloat(value); }); return sum; }
//设置分组模式和聚合函数 gridOptions.groupSuppressAutoColumn = true; gridOptions.groupUseEntireRow = true; gridOptions.autoGroupColumnDef = { headerName: 'Group', field: 'group', cellRenderer: 'agGroupCellRenderer', cellRendererParams: { checkbox: true } }; gridOptions.groupRowAggNodes = function(nodes) { var result = { sum: 0 }; nodes.forEach(function(node) { result.sum += parseFloat(node.groupData.amount); }); return result; }; gridOptions.getGroupAggFunction = sumAggFunction;
// 设置列定义 var columnDefs = [ { headerName: 'Group', field: 'group' }, { headerName: 'Amount', field: 'amount', aggFunc: 'sum' } ];
// 将数据传入ag-grid var rowData = [ { group: 'A', amount: 100 }, { group: 'A', amount: 200 }, { group: 'B', amount: 300 }, { group: 'B', amount: 400 } ];
// 创建ag-grid实例并传入参数 var gridOptions = { columnDefs: columnDefs, rowData: rowData, enableFilter: true, enableSorting: true, groupSuppressAutoColumn: true, groupUseEntireRow: true, autoGroupColumnDef : { headerName: 'Group', field: 'group', cellRenderer: 'agGroupCellRenderer', cellRendererParams: { checkbox: true } }, groupRowAggNodes: function(nodes) { var result = { sum: 0 }; nodes.forEach(function(node) {