0

Dojo 1.6 バージョンを使用しています。私の理解は次のとおりです。が定義されている場合、コールバック関数 saveCompleteCallback はstore.save() が呼び出されたときにのみ呼び出されますか?

また、コールバック関数 saveCompleteCallback( saveSuccesssaveFail、 storeData){} で定義されている1 番目2 番目のパラメーターを使用する必要がありますか? store.save({onComplete: saveSuccess , onError: saveFail }) を呼び出すときにそれらを使用する必要があることしか知らないからです。

4

1 に答える 1

0

まず、dojox.data.dataGrid のデータを xhrPosted にしてから xhrGeted にする必要がある場合にのみ、_saveEverything を使用します。

次のように定義するとします。 store._saveEverything = saveCompleteCallback;

追加の saveSuccess() および saveFail() 関数を saveCompleteCallback() で再度呼び出す必要があるため、saveCompleteCallback(saveSuccess, saveFail, storeData) の 1 番目と 2 番目のパラメーターを含める必要があることがわかりました。例えば

// When you wanna upload datagrid, you click upload button
Store.save({ onComplete : saveSuccess, onError : saveFail });

// Definition of saveCompleteCallback
function saveCompleteCallback(saveSuccess, saveFail, storeData) {
  dojo.xhrpost(
    url: posturl,
    postData:storeData,
    load: function(data) {
      // saveSuccess() must be invoked here again, 
      // otherwise this function will not be called
      saveSuccess();
    }
  );
}

function saveSuccess() {
    dataGrid = dijit.byId('YOUR DATAGRID ID');
    dojo.xhrGet(
        url: geturl, 
        load: function(date){
            // The reason that a new xhrGet is called is db data is updated
            // So the dataGrid will have no value after xhrPost
            var store = new dojo.data.ItemFileWriteStore({data: data});
            store._saveEverything = saveEverything;
            store.clearOnClose = true;
            store.urlPreventCache = true;
            dataGrid.setStore(store);
        }
    );
}
于 2013-06-17T17:38:53.247 に答える