Rails7+Stimulus+AG-Grid:修改payment_method后cheque_number未动态可编辑
解决AG-Grid中修改payment_method后cheque_number无法编辑的问题
问题根源是AG-Grid不会自动重新评估单元格的editable条件,除非单元格被刷新。当你修改payment_method后,cheque_number列的可编辑状态需要手动触发重新计算。
解决方案步骤
- 给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 }); } } }
- 确保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
相关产品推荐
相关产品推荐

