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

Ag-grid中isRowSelectable条件未触发,修改行数据后复选框不显示

问题根因

redrawRows 仅会重新渲染行的可视内容,不会触发Ag-Grid内部对行可选状态的重新校验逻辑,因此isRowSelectable函数不会被调用,复选框的显示状态自然不会更新。


解决方案

  • 方案1:使用applyTransaction更新行数据(推荐)
    这是Ag-Grid官方推荐的行数据更新方式,会自动触发所有行相关逻辑的重新计算,包括isRowSelectable的执行:
modal.result.then(() => {
  const row = params.api.getDisplayedRowAtIndex(params.rowIndex as number);
  this.gridApi?.applyTransaction({
    update: [row.data]
  });
});
  • 方案2:调用带force参数的refreshCells
    如果你的数据源已经在外部更新完成,不想走事务更新逻辑,可以强制刷新指定行的所有属性:
modal.result.then(() => {
  const row = params.api.getDisplayedRowAtIndex(params.rowIndex as number);
  this.gridApi?.refreshCells({
    rowNodes: [row],
    force: true
  });
});
  • 方案3:重新赋值isRowSelectable配置
    兜底方案,手动重新设置可选判断逻辑,会强制触发全表的行可选状态校验:
modal.result.then(() => {
  this.gridApi?.setIsRowSelectable(rowNode => {
    return rowNode.data ? rowNode.data.published === false : true;
  });
});

补充注意点

如果你的复选框是在列配置中通过checkboxSelection属性控制显示,需要确保该属性设置为true,isRowSelectable只会控制复选框是否可交互/是否显示,不会覆盖列配置中完全关闭复选框的设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:36:03