0

EditorGridPanel新しいレコードを追加するためのツールバー ボタンがあります。1 つのシナリオを除いて、すべて正常に動作します。データベースに既に存在するレコードを挿入しようとすると、サーバーから次のメッセージが返されます。

{"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を指定してポストリクエストをサーバーに送信する挿入メソッドを使用します (encode は true、listful は true):

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 つのアイテムを作成するように要求しているにもかかわらず、1 つだけが返送されるため、エラーが発生する可能性があります。

では、どのように対処すればよいのでしょうか? 再度、不合格品の依頼を出さないようにすることはできますか?

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 に答える