有没有办法在模型中重命名自动生成的 "id" 属性?

Is there a way to rename, in a model, the automatically generated "id" property?

我有一个网格,我通过向商店添加项目或通过服务器接收现有项目来填充它。 这是发生了什么:

1-users adds new items to the grid by gui.
2-users can send new items to the server by pressing a "send" button.

每个项目都有一个 "id" 属性,无论如何对于新创建的项目,id 总是 0,而对于现有的(即由服务器发送)id 是不同的。

这会导致以下情况:添加新项目时,如果没有其他具有相同 ID 的项目,extjs 会接受它...在我的情况下,这是一个问题,因为可以有多个行相同的 ID (0)!

有办法解决这个问题吗?有没有办法让 extjs 以另一种方式调用它的 "id" 属性,这样它就不会与我的 "id" 属性?

冲突

编辑:

通过将模型中的 idProperty 值设置为另一个字段来部分解决:

idProperty: extid

无论如何让我烦恼的是,如果我

store.getAt(i).getData()

我仍然在结果 json 中得到 "extid" 属性...我不想将此字段发送到我的服务器。

不要为新项目分配任何 ID。 Ext 将这样的记录标记为幻影,并将它们作为新的待添加记录发送到服务器。服务器分配 id 并将它们发送回 Ext。 Ext 分配这些服务器创建的 ID,记录不再是新的。

你说when adding a new item extjs accepts it just if there is no other item with the same id...and in my case this is a problem as there can be multiple rows with the same id肯定有误会。

在 ExtJs 中,新创建的行的 id 始终为零。这是设计使然。 id=0 超过一行时出现问题。 id = 0 的行被 ExtJs 视为尚未保存到服务器的行。

与任何数据库一样,新行的自动递增 id 是在您将该行插入数据库时​​定义的。 ExtJs 期望您的 table 中的 id 列是一个自动递增的 id,因此,它期望服务器将带有现在定义的 id 的行发送回客户端。

这就是您的后端的工作方式。如果没有,您将很难让它与 ExtJs 一起很好地工作。我们不会要求您改变服务器的行为。 ExtJs 要求服务器按预期运行。