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

时间:2015-02-28 19:19:39

标签: extjs extjs4 extjs5

我有一个网格,我通过向商店添加商品或通过服务器接收现有商品来填充。 这就是:

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不同。

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

有没有办法解决这个问题?有没有办法让extjs以另一种方式调用它的“id”属性,以便它不与我的“id”属性冲突?

编辑

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

idProperty: extid

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

store.getAt(i).getData()

我仍然在生成的json中获得“extid”属性...我不想将此字段发送到我的服务器。

2 个答案:

答案 0 :(得分:2)

当你说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的行被ExtJ视为尚未保存到服务器的行。

任何数据库都可以工作,在您在数据库中插入该行时,会定义新行的自动增量id。 ExtJs期望表中的id列是一个自动增加的id,因此,它希望服务器将带有现在定义的id的行发送回客户端。

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

答案 1 :(得分:0)

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