我有一个网格,我通过向商店添加商品或通过服务器接收现有商品来填充。 这就是:
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”属性...我不想将此字段发送到我的服务器。
答案 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,并且记录不再是新的。