我想找出在Ag-Grid中编辑了哪一行?

时间:2018-09-17 10:52:11

标签: angular ag-grid ag-grid-ng2 ag-grid-react

我想找出在Ag-Grid中编辑了哪一行?我只想保存那些已编辑的行?所以有什么方法可以让我找出编辑过的那一行吗?

2 个答案:

答案 0 :(得分:1)

您可以将onCellEditingStopped()事件用于ag-grid。

html

<ag-grid-angular
    ...
    (cellEditingStopped)="onCellEditingStopped($event)"
    ...
    ></ag-grid-angular>

ts

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;
    }
}