Extjs 行编辑网格与同步

Extjs 行编辑网格与同步,extjs,extjs6,extjs-stores,Extjs,Extjs6,Extjs Stores,我尝试实现一个通用的行编辑网格,不同的是我希望将更改与服务器后端同步。到目前为止,我可以使用onRoweditAdd添加新行 问题在于store.sync不会向服务器发送创建请求,而是发送更新请求。它看起来像store.insert0,记录未记帐。仅同步用户所做的修改。罪魁祸首可能是什么?不幸的是,我无法制作出重现问题的小提琴 我通过改变这一行解决了这个问题: record = store.getModel().create({id: 0}); 到 这个问题与ExtJS5以来记录ID的新实现有

我尝试实现一个通用的行编辑网格,不同的是我希望将更改与服务器后端同步。到目前为止,我可以使用onRoweditAdd添加新行


问题在于store.sync不会向服务器发送创建请求,而是发送更新请求。它看起来像store.insert0,记录未记帐。仅同步用户所做的修改。罪魁祸首可能是什么?

不幸的是,我无法制作出重现问题的小提琴

我通过改变这一行解决了这个问题:

record = store.getModel().create({id: 0});

这个问题与ExtJS5以来记录ID的新实现有关。但我无法解释


ExtJs 6中不能再支持创建id为0的新记录。

不幸的是,我无法创建重现此问题的小提琴

我通过改变这一行解决了这个问题:

record = store.getModel().create({id: 0});

这个问题与ExtJS5以来记录ID的新实现有关。但我无法解释

ExtJs 6中不能再支持创建id为0的新记录。

通过在记录中提供现有id,ExtJs假定此记录已存在于您的存储中,并且必须更新。如果您不提供id,那么它会假定这是一个新创建的记录,并将执行创建路径。这来自于这样一种假设,即您使用生成的ID策略,通常您应该使用该策略,因此在创建时您永远不会自己提供ID

在引擎盖下,ExtJS将记录标记为幻影:真或假。幻影记录是仅存在于前端且尚未持久化的记录。创建没有id的记录会将其标记为幻影,而创建具有已提供id的记录不会将其标记为幻影,也不会触发创建调用而是更新。通过在记录中提供现有id,ExtJS假定此记录已存在于您的存储中,并且必须更新。如果您不提供id,那么它会假定这是一个新创建的记录,并将执行创建路径。这来自于这样一种假设,即您使用生成的ID策略,通常您应该使用该策略,因此在创建时您永远不会自己提供ID

在引擎盖下,ExtJS将记录标记为幻影:真或假。幻影记录是仅存在于前端且尚未持久化的记录。创建没有id的记录会将其标记为幻影,而创建具有已提供id的记录不会将其标记为幻影,也不会触发创建调用,而是更新。我发现在Ext.data.Model idProperty中,idProperty用作标识记录的唯一键。默认情况下,它具有ID字段集。如果您提供了副本,则会导致存储中出现问题

此描述已写入ExtJS文档

The data values for this field must be unique or there will be id value collisions in the Ext.data.Store.
Defaults to:
'id'
请参阅

我发现在Ext.data.Model中,idProperty用作标识记录的唯一键。默认情况下,它具有ID字段集。如果您提供了副本,则会导致存储中出现问题

此描述已写入ExtJS文档

The data values for this field must be unique or there will be id value collisions in the Ext.data.Store.
Defaults to:
'id'

请参考

我已尝试复制,但是,即使我已尝试复制,但无法复制。如果可能,请共享小提琴。@Alexander我找到了一个解决方法,请查看我的答案。如果您理解为什么不允许创建id为0的记录,请将其作为您的答案,我会接受它。@RonakPatel我找到了一个解决方法,请查看我的答案。如果您理解为什么不允许创建id为0的记录,请将其作为您的答案,我将接受。我已尝试复制,但是,即使我已尝试复制,但无法复制,请尽可能共享fiddle。@Alexander我找到了解决方法,请查看我的答案。如果您理解为什么不允许创建id为0的记录,请将其作为您的答案,我会接受它。@RonakPatel我找到了一个解决方法,请查看我的答案。如果您理解为什么不允许创建id为0的记录,请将其作为您的答案,我将接受。谢谢您的解释。这与ExtJS4不同,其中id==0表示新记录谢谢您的解释。这与extjs4不同,其中id==0表示新记录