向网格中添加新行

时间:2016-01-27 07:58:24

标签: ag-grid

我将ag-grid初始化为:

<ag-grid-ng2 [rowData]="records"></ag-grid-ng2>

将新项目添加到记录数组后,ag-grid中的行仍未保留。 我必须调用setRowData(记录)。但这非常缓慢,并且ag-grid失去了它的状态(就像聚焦细胞一样)。

在更改rowData中的数据时,是否有另一种方法可以在ag-grid中刷新行。

4 个答案:

答案 0 :(得分:3)

不,没有别的办法。网格期望rowData是不可变的,这意味着您必须替换要拾取的[rowData]属性的数组。与此相关的方法是调用api.setRowData()方法,该方法强制网格将rowData视为一组新数据。

答案 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