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

Rails7+Stimulus+AG-Grid:修改payment_method后cheque_number未动态可编辑

解决AG-Grid中修改payment_method后cheque_number无法编辑的问题

问题根源是AG-Grid不会自动重新评估单元格的editable条件,除非单元格被刷新。当你修改payment_method后,cheque_number列的可编辑状态需要手动触发重新计算。

解决方案步骤

  1. 给payment_method列添加值变化回调
    在构建payment_method列定义的函数中,加入onCellValueChanged事件处理,当支付方式修改后,刷新当前行的cheque_number单元格:
function buildEditablePaymentMethodsCollDef(paymentMethods) {
  return {
    cellEditor: 'agSelectCellEditor',
    cellEditorParams: {
      values: Object.keys(paymentMethods),
      useFormatter: true
    },
    editable: true,
    refData: paymentMethods,
    cellRenderer(params) {
      return paymentMethods[params.value]
    },
    // 添加值变化后的刷新逻辑
    onCellValueChanged(params) {
      // 刷新当前行的cheque_number单元格,强制重新评估可编辑状态
      params.api.refreshCells({
        rowNodes: [params.node],
        columns: ['cheque_number'],
        force: true
      });
    }
  }
}
  1. 确保cheque_number列的可编辑判断逻辑正确
    你当前的cheque_number列配置已经正确,保持不变即可:
cheque_number: { 
  ...EDITABLE_TEXT_COL_DEF, 
  cellClass: 'font-mono', 
  maxWidth: 300, 
  sortable: true, 
  editable: params => params.data.payment_method === 'CHEQUE' 
}

原理说明

  • 修改payment_method后,onCellValueChanged会触发,调用refreshCells方法指定刷新当前行的cheque_number单元格。
  • force: true参数强制AG-Grid重新计算单元格的所有状态,包括editable条件,这样就能根据最新的payment_method值动态切换cheque_number的可编辑性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:27:38