我将ag-grid初始化为:
<ag-grid-ng2 [rowData]="records"></ag-grid-ng2>
将新项目添加到记录数组后,ag-grid中的行仍未保留。 我必须调用setRowData(记录)。但这非常缓慢,并且ag-grid失去了它的状态(就像聚焦细胞一样)。
在更改rowData
中的数据时,是否有另一种方法可以在ag-grid中刷新行。
答案 0 :(得分:3)
答案 1 :(得分:0)
找到解决方案。可能是我失去了一些功能并且会有一些错误,但对我来说它现在有效。
AddRecord(data) {
this.records.push(data);
var id = this.records.length-1;
var node = {childIndex:id, data: this.records[id], firstChild: false, id:id, lastChild: false};
this.gridOptions.api.grid.inMemoryRowController.rowsAfterMap.push(node);
this.gridOptions.api.rowRenderer.refreshView(id);
this.gridOptions.api.hideOverlay();
}
答案 2 :(得分:0)
最近我注意到了一个新功能this.gridOptions.api.updateRowData(Tranactions)
。传递具有三个数组的对象:
var transactions = {
add: [/*array of records you want to add.*/]
remove: [/*array of records you want to remove.*/]
update: [/*array of records you want to update.*/]
}
this.gridOptions.api.updateRowData(tranactions);
参考:https://www.ag-grid.com/javascript-grid-data-update/?framework=javascript。 (由于某种原因,他们在该页面上调用函数 updateData ,但不存在这样的函数。而是将其称为updateRowData
。)
答案 3 :(得分:0)
这就是我最终添加新记录的方式。
您可以为此使用 applyTransaction()
函数(我认为这被称为 updateRowData()
)。
var newItems = [createNewRowData(), createNewRowData(), createNewRowData()];
var res = this.gridApi.applyTransaction({
add: newItems,
addIndex: addIndex,
});
以上代码来自their example。