我想使用同一列中其他行的值为特定行实现自定义计算。我发现 AG Grid 提供了定义列定义表达式和aggFunc的能力,但它们并不能解决我想要的问题:
Column Definition Expressions
(我们称之为 CDE)允许用户引用同一行的其他列aggFunc
在用户可以使用内置函数或定义自定义聚合函数的分组情况下很有帮助,该函数只能在特定组内使用同一列的单元格值。
我需要解决以下问题:
Category groups | Jan | Feb | Total
---------------------------------------------------------------------------------
Income | {it is place for aggFunc} | | {it is place for CDE}
In 1 | | |
In 2 | | |
Ignored In in Net | | |
Liabilities | | |
Net Income ??? | In 1 + In 2 - Liabilities | |
Net Income Total ??? | Income - Liabilities | |
结果应该是这样的:
Category groups | Jan | Feb | Total
----------------------------------------------
Income | 62 | 17 | 79
In 1 | 12 | 10 | 22
In 2 | 20 | 5 | 25
Ignored In in Net | 30 | 2 | 32
Liabilities | 15 | 10 | 25
Net Income ??? | 17 | 5 | 22
Net Income Total ??? | 47 | 7 | 54
那么,我如何通过 AG Grid (react)为Net Income
行和Net Income Total
行定义公式(表达式/聚合函数) ,我可以在其中引用同一列中任何需要的行(在上述情况下Net Income = In 1 + In 2 - Liabilities
以及Net Income Total = Income - Liabilities
Jan、Feb 等)。 )?可以使用哪个 API?
目前,我实现了这个DEMO,但在官方 AG Grid 文档中没有找到任何关于如何实现所需案例的线索,而且这个库是否有可能......
升级版。我试图通过以下方式实现它:
- 覆盖
getRowNodeId()
回调以具有可预测的 rowNodeId; api.getRowNode(rowId)
通过;获取 rowNode- 使用具有 2 个参数的getValue()
(colKey, rowNode)
函数,理论上它应该返回指定行的目标列的值。
结果我有:
gridOptions = {
getRowNodeId: row => {
return `${row.level0}${row.lastLevel}`;
},
...
columnTypes: {
...
janType: {
enableValue: true,
aggFunc: 'sum',
valueGetter: ({ data, getValue, api }) => {
if (data.lastLevel === 'Net Income') {
const in1Row = api.getRowNode('IncomeIn 1');
const in2Row = api.getRowNode('IncomeIn 2');
// Uncaught RangeError: Maximum call stack size exceeded
return getValue("Jan", in1Row) + getValue("Jan", in2Row);
}
...
return data.Jan;
}
},
...
},
};
这不起作用并getValue("Jan", in1Row) + getValue("Jan", in2Row)
导致Uncaught RangeError: Maximum call stack size exceeded
.
感谢您提供解决此案例的任何想法/示例!