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

刷新AgGrid后如何重新选中更新前最后一次选中的行

实现思路

你当前的代码仅在点击单元格时触发选中,AG Grid刷新后原有行节点会被销毁重建,因此需要额外做两步逻辑:存储最后选中的行ID、数据刷新后恢复选中。

具体修改步骤

  1. 在组件state中新增字段存储最后选中的行ID
state = {
  // 保留你原有state内容
  lastSelectedRowId: null
}
  1. 选中行时更新存储的ID,推荐在onSelectionChanged回调中处理,覆盖所有选中触发场景(点击、键盘操作等)
onSelectionChanged = params => {
  const selectedRows = params.api.getSelectedRows()
  if (selectedRows.length) {
    const selectedRow = selectedRows[0]
    this.setState({ lastSelectedRowId: selectedRow.id })
    // 你原有选中后的业务逻辑可以移到这里
    this.props.actions.selectMarketingProspect(selectedRow)
    this.props.actions.getMarketingCustomerNotes(this.props.dealerID, selectedRow.id)
  } else {
    this.setState({ lastSelectedRowId: null })
  }
}
  1. 给AG Grid添加数据更新完成回调,恢复选中状态
    首先在AgGridReact组件上新增事件绑定:
<AgGridReact
  {/* 保留你原有所有配置 */}
  onRowDataUpdated={this.restoreLastSelectedRow}
/>

然后实现恢复选中的方法:

restoreLastSelectedRow = params => {
  const { lastSelectedRowId } = this.state
  if (!lastSelectedRowId) return
  // 你已配置getRowNodeId,可直接通过ID查找行节点
  const targetNode = params.api.getRowNode(lastSelectedRowId)
  if (targetNode) {
    targetNode.setSelected(true, true)
  }
}

注意事项

  • 你已经开启了deltaRowDataMode和getRowNodeId配置,完全匹配这个方案的前提要求,不需要额外修改基础配置
  • 如果是你主动调用api.setRowData()触发数据刷新,也可以在调用setRowData后直接执行恢复选中逻辑,不需要依赖事件回调,可控性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:54:04