extjs4关于proxy中设置idProperty,后store增加数据不能sync()的问题

来源:互联网 发布:sip python 编辑:程序博客网 时间:2024/04/29 08:25

     今天遇到一个很奇怪的问题,form新增一条记录后,产生一个model,然后加到store中提交


var model = Ext.create('Model‘, form.getForm().getValues());

grid.store.add(model);

grid.store.sync();


store.sync()怎么样都不执行,看了例子都是对的,后来查了不少东西总算明白了原来是

model.phantom 这个属性,要设置为true,表示此数据在服务器上没有,只在客户端有,那么为什么新建的model的

model.phantom 为false呢,是因为新增的时候如果 model.idProperty 设置的字段如果有值的话,ext 就认为这条数据

在服务器端已经有了,就不会去更新了。

    但是idProperty 不设置又会有新的问题 即是grid 选中了一条,在刷新过后,选中的那么会失去选中状态。


   最终解决办法,

var model = Ext.create('Model‘, form.getForm().getValues())

model.phantom =true;

form.modulegrid.store.add(model);

form.modulegrid.store.sync();


这样就解决问题了,因此设计数据库的时候最好用一个自增量字段作为主键,就无此问题,但是有些主键是要自己定义的,就会产生这个问题