我尝试添加
[deltaRowDataMode]="true"
Run Code Online (Sandbox Code Playgroud)
到我的网格并调用
this.gridApi.setRowData(this.rowData);
Run Code Online (Sandbox Code Playgroud)
但代码抛出错误
ag-Grid: ImmutableService requires getRowNodeId() callback to be implemented, your row data need IDs!
Run Code Online (Sandbox Code Playgroud)
推../projects/secdo-infra-lib/node_modules/ag-grid-community/dist/lib/rowModels/clientSide/immutableService.js.ImmutableService.createTransactionForRowData @ immutableService.js:38 推../projects/secdo-infra -lib/node_modules/ag-grid-community/dist/lib/gridApi.js.GridApi.setRowData @ gridApi.js:151
在网上查了一下,我读到 getRowNodeId 如果未设置,则会自动生成,所以我不明白为什么会引发错误。
来自文档
为了使 deltaRowDataMode 正常工作,您必须通过实现 getRowNodeId() 回调来提供行节点的 ID。
网格按照以下规则计算增量变化:
如果新项目的 ID 在网格中没有相应的项目,则它是“添加”。
如果新项目的 ID 在网格中确实有对应的项目,则比较对象引用。如果对象引用不同,则为更新,否则没有任何内容(从事务中排除)。
如果网格中的某些项目在新数据中没有对应的项目,则它是“删除”。
您可以getRowNodeId()通过为每行返回唯一 id 的方式来实现。例如
this.getRowNodeId = function(data) {
return data.id; //id is a field here
};
Run Code Online (Sandbox Code Playgroud)
这个官方例子有更多细节
| 归档时间: |
|
| 查看次数: |
5896 次 |
| 最近记录: |