我想找出在Ag-Grid中编辑了哪一行?我只想保存那些已编辑的行?所以有什么方法可以让我找出编辑过的那一行吗?
答案 0 :(得分:1)
您可以将onCellEditingStopped()
事件用于ag-grid。
<ag-grid-angular
...
(cellEditingStopped)="onCellEditingStopped($event)"
...
></ag-grid-angular>
onCellEditingStopped(e) {
console.log(e.rowIndex);
}
答案 1 :(得分:1)
全局保存按钮?与节点(行)无关
是的。正确
好的,在这种情况下,您需要通过Id
来跟踪什么是新数据。因此,假设您的数据上有unique
标识符-它将代表Primary
密钥或类似名称-并且该密钥应在后端或数据库侧进行处理。
现在,仅获取“新”节点,您可以像这样过滤grid-data
:
let newData = [];
this.gridApi.forEachNode(node=>{
if(!node.data.id)
newData.push(node.data)
})
但是我建议避免使用多个insert
并像这样分别处理每个创建:
handleInsert():void{
let yourDataModel = {
...
}
this.sampleApiService.sampleRequest(dataModel).subscribe(result => {
this.gridApi.updateRowData({add:[result], addIndex:0});
})
}
result
-应该返回已定义的dataModel
的修改后的Id
在这种情况下,您将能够更新grid-data
,并确保数据正确且已插入storage
中。
更新添加了更新示例
除了(cellEditingStopped)
事件之外,您还可以使用valueSetter
跟踪单元格更新
handleUpdateValue(params: ValueSetterParams){
// see if values are different if you have a complex object,
// it would be more complicated to do this.
if (params.oldValue!==params.newValue) {
// params.colDef.field - updated cell ID
... handle update logic here - call API and so on ...
// get grid to refresh the cell
return true;
} else {
// no change, so no refresh needed
return false;
}
}