You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ag Grid删除单行后如何不重调后端接口更新表格数据?

解决方案

两种实现方案二选一即可:


方案1:直接通过AG Grid内置API删除行(最便捷)

AG Grid的自定义cellRenderer参数中自带全局gridApi实例,不需要获取完整rowData,直接调用事务更新接口删除当前行即可,仅需修改你的buttonRenderer组件的onDelete方法:

public onDelete = async ($event) => {
  if ((await this.teamService.deleteTeamMember(this.params.node.data._id)) === false) {
    return;
  }
  this.notification.success('Team member deleted successfully.');
  // 新增以下代码直接删除当前行
  this.params.api.applyTransaction({
    remove: [this.params.node.data]
  });
};

说明:applyTransaction是AG Grid提供的局部更新能力,只会重渲染受影响的行,性能远高于全量替换rowData,不需要额外和父组件通信,适合不需要额外同步rowData到父组件其他业务逻辑的场景。


方案2:通过父组件回调同步更新rowData(需同步父组件rowData状态可选)

如果你的业务需要父组件维护的rowData和表格数据保持同步,可以通过cellRenderer的自定义参数传递父组件的删除回调:

第一步:修改表格组件配置,传递回调

// 表格组件内新增删除行方法
onDeleteRow = (deleteId: string) => {
  // 过滤掉已删除的行,更新父组件的rowData
  this.rowData = this.rowData.filter(item => item._id !== deleteId);
}

this.gridOptions = {
  suppressMenuHide: false,
  columnDefs: [
    // 其余列配置保持不变
    {
      cellRenderer: 'buttonRenderer',
      cellRendererParams: {
        onClick: this.onBtnClick1.bind(this),
        label: 'Click 1',
        // 新增删除成功回调
        onDeleteSuccess: this.onDeleteRow.bind(this)
      }
    },
  ],
}

第二步:修改buttonRenderer组件,调用回调更新数据

public onDelete = async ($event) => {
  const deleteId = this.params.node.data._id;
  if ((await this.teamService.deleteTeamMember(deleteId)) === false) {
    return;
  }
  this.notification.success('Team member deleted successfully.');
  // 调用父组件传过来的回调更新rowData
  this.params.onDeleteSuccess(deleteId);
};

内容的提问来源于stack exchange,提问作者Ehsan Nissar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:12:00