0
votes

I have an EditorGridPanel with toolbar button to add new records. Everything works fine except one scenario. When I try to insert a record which already exists in database, server sends back:

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

but grid creates a new row marked with red triangle. If after that I try to insert a new record (even if it doesn't exist in database), everything works fine on the server side, but i get an 'uncaught exception' in firebug. It says:

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

why is that?

EDIT I have found that:

When I try to insert a new record I use insert method which sends post request with parameter data to server (encode is true, listful is true):

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

and it gets from server:

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

after that I try to create an item with the same name:

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

so I get:

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

from server.

The next time I try to create the right item the store sends array with 2 items

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

but server creates only the first (newest) item and sends back:

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

So the error may occur because store asks server to create 2 items, but only one is send back.

So how to deal with it? is it possible to make store not to send the request for failed item again?

1

1 Answers

0
votes

try to switch off the autoSave opiton in the Store.

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

see example for more info http://dev.sencha.com/deploy/dev/examples/writer/writer.html