0

我有一个EditorGridPanel带有工具栏的按钮来添加新记录。除了一种情况外,一切正常。当我尝试插入数据库中已经存在的记录时,服务器发回:

{"success":false,"message":"already exists","data":{}}

grid会创建一个标有红色三角形的新行。如果在那之后我尝试插入一条新记录(即使它在数据库中不存在),那么在服务器端一切正常,但我在 firebug 中得到一个“未捕获的异常”。它说:

'uncaught exception: Ext.data.DataReader: #realize was called with invalid remote-data. Please see the docs for DataReader#realize and review your DataReader configuration.'

这是为什么?

编辑 我发现:

当我尝试插入新记录时,我使用插入方法将带有参数的发布请求发送data到服务器(编码为真,列表为真):

data    [{"Name":"123"}]

它从服务器获取:

{"success":true,"data":{"PositionId":"eef1d9f3-9fdf-4b87-9f6c-ef42231f4fed","Name":"123"}}

之后我尝试创建一个具有相同名称的项目:

data    [{"Name":"123"}]

所以我得到:

{"success":false,"message":"already exists","data":{}}

从服务器。

下次我尝试创建正确的项目时,商店会发送包含 2 个项目的数组

data    [{"Name":"1234"},{"Name":"123"}]

但服务器只创建第一个(最新的)项目并发回:

{"success":true,"data":{"PositionId":"1ff05c7f-d5fc-41cd-81f3-faabc225b2a6","Name":"1234"}}

因此可能会发生错误,因为商店要求服务器创建 2 个项目,但只有一个被发回。

那么如何处理呢?是否可以让商店不再发送失败项目的请求?

4

1 回答 1

0

尝试关闭商店中的自动保存选项。

    this.store = new Ext.data.Store({
        id: 'store'
        ,autoSave: false 
        ,autoLoad: true
        ,writer: writer,  
        ,proxy: proxy
        ,reader: reader
        scope       : this
    });

有关更多信息,请参见示例http://dev.sencha.com/deploy/dev/examples/writer/writer.html

于 2011-01-13T09:37:18.730 回答