2017-02-27 99 views
0

我有一個定製的表格看起來如下: enter image description here使用批處理多進程

正如你可以在頁腳看到的,它可以添加,刪除和保存項目表。

假設用戶添加2個新項目,刪除1個項目並單擊保存按鈕。

我的問題是,我應該如何處理髮送到服務器的請求?

我應該將表中的所有項目發送到服務器,並在將項目插入表格後首先刪除所有項目。

回答

2

嗨,我認爲這將解釋如何建立和發送批量請求。 你應該記住,這個片段是由爲SAPUI5 v1.28.x,之後batchId是過時;)

你也應該記住,我使用ODataModel v2。 這些都是我用來創建這些調用的所有方法:

  • create
  • update
  • remove

    sendBatchRequest: function (itemsToBeRemoved, itemsToBeUpdated, itemsToBeCreated) { 
        var controller = this; 
        var batchGroupId = "myBatchGroupId"; 
        var oModel = this.getView().getModel(); 
        var sKey = null; 
    
        oModel.setUseBatch(true); 
    
        //Batch request to create objects 
        for(sKey in itemsToBeCreated) { 
         oModel.create(
          itemsToBeUpdated[sKey].getPath(), 
          itemsToBeUpdated[sKey].getData(), { 
          batchGroupId: batchGroupId 
         }); 
        } 
    
        //Batch request to update objects 
        //Merge will allow you to partially update object with deltas 
        for(sKey in itemsToBeUpdated) { 
         oModel.update(
          itemsToBeUpdated[sKey].getPath(), 
          itemsToBeUpdated[sKey].getData(), { 
          merge: true, 
          batchGroupId: batchGroupId 
         }); 
        } 
    
        //Batch request to delete objects 
        for(sKey in itemsToBeRemoved) { 
         oModel.remove(itemsToBeRemoved[sKey].getPath(), { 
          batchGroupId: batchGroupId 
         }); 
        } 
    
        oModel.setDeferredBatchGroups([batchGroupId]); 
        oModel.submitChanges({ 
         batchGroupId: batchGroupId, 
         success: function() { 
          console.log("Everything is awesome!"); 
         }, 
         error: function() { 
          console.log("Houston we have a problem!"); 
         } 
        }); 
    }