pro-components icon indicating copy to clipboard operation
pro-components copied to clipboard

🐛[BUG] CellEditorTable 单元格编辑,显示的内容是之前的值,并且如果里面渲染日期组件的话,onchange事件监听不到

Open jianshe opened this issue 1 year ago • 6 comments

🐛 bug 描述

📷 复现步骤

1.我目前使用CellEditorTable进行新需求的开发,当我触发单元格编辑时,修改的值,回车后还是原始值。 2.如果单元格是通过日期渲染的,我修改了日期的值,显示的还是原始值。

jianshe avatar Jun 05 '24 07:06 jianshe

我也遇到了同样的问题,mark一下

mengera88 avatar Jun 28 '24 02:06 mengera88

mark

awesomeWay avatar Jul 02 '24 09:07 awesomeWay

有遇到对某一列 column 配置 editable : false 的情况下依然可以双击编辑该单元格的情况吗? @jianshe

yangzheng93 avatar Aug 07 '24 11:08 yangzheng93

mark

jackehuang avatar Aug 23 '24 10:08 jackehuang

我也遇到了,请问你最后是如何解决的?@yangzheng93

DeteMin avatar Sep 19 '24 10:09 DeteMin

我也遇到了,请问你最后是如何解决的?@yangzheng93

看代码 CellEditorTable 就是做了这个事情,所以我最后换了 EditorTable 利用提供的事件自己监听 change blur

yangzheng93 avatar Sep 20 '24 23:09 yangzheng93

请问 CellEditorTable 修改cell数据后不触发onChange,blur后也只显示原数据这个bug不打算修了吗? 官网demo里就能复现

xuchaoying avatar Jan 01 '25 03:01 xuchaoying

mark

CWH0908 avatar Feb 07 '25 06:02 CWH0908

一样的问题。CellEditorTable 因为这个问题已经不可用了。还不如用普通的 Table,并且让 AI 把单元格编辑功能给我写上。

JamesFiitWork avatar Aug 08 '25 09:08 JamesFiitWork

用 qwen3-coder 分析了一下源码,好像挺有道理的

基于对代码的分析,我现在来解释为什么在CellEditorTable中会出现编辑后数据还原的问题:

在CellEditorTable组件中,存在以下几个关键问题导致数据编辑后被还原:

状态管理问题: 在CellEditorTable的实现中,editableKeys状态仅用于控制哪些行处于编辑状态,但没有正确处理编辑后的数据提交和保存流程。

数据更新机制缺陷: 当双击单元格进入编辑状态时,CellEditorTable通过onDoubleClick事件设置editableKeys,但是当失去焦点时,虽然调用了onBlur清空了editableKeys(使编辑状态消失),但此时并未正确地将编辑后的值保存到主数据源中。

缺少onSave处理: CellEditorTable没有提供onSave处理函数来处理编辑完成后的数据保存,导致即使表单中的值改变了,也没有更新到dataSource中。

编辑状态与数据流不同步: CellEditorTable继承自EditableProTable,但没有正确配置editable属性中的onSave或onChange回调,导致编辑后的数据无法正确地通过onChange回调更新到父组件的dataSource状态中。

解决方案应该包括:

为CellEditorTable添加适当的onSave处理函数 确保在编辑完成后将更改同步到主数据源 正确处理表单验证和数据提交流程 这就是为什么用户会遇到"提交没用"的问题 - 实际上是因为组件没有正确处理编辑完成后的数据保存流程,导致数据被还原到编辑前的状态。

JamesFiitWork avatar Aug 08 '25 10:08 JamesFiitWork