繁体   English   中英

带有sap.ui.model.odata.v2.ODataModel的sapui5批处理

[英]sapui5 batch with sap.ui.model.odata.v2.ODataModel

我使用JSONModel用数据创建了表

    var oModel = new sap.ui.model.json.JSONModel(query);
    oTablePrio = sap.ui.getCore().getControl("idTablePrio2");
    oTablePrio.setModel(oModel, "Prio2"); 

一切都看起来不错,工作也不错。

现在,我添加了新的column(prio),我将在其中更改值。 更改后,我想在单击按钮后保存所有行(在SAP ztable中)。 我做了这样的事情

var oModel = new sap.ui.model.odata.v2.ODataModel(gServiceUrl);
        oModel.setUseBatch(true);
        for (var i = 0; i < data.length; i++) {
            sEntry.Matnr = data[i].Matnr;
            sEntry.Bbynr = data[i].Bbynr;
            sEntry.Prio = data[i].Prio;

oModel.update("/WielosztSet('"+data[i].Bbynr+"')", sEntry, {
                  method: "PUT",  function(){
                alert('Data Updated Successfully');
                 location.reload(true);
                  },function(){
                        sap.m.MessageToast.show('Update failed',{duration:1000});

                  }});
}

现在只有它发送最后一行的数据。 我写道,我不能以这种方式更新多于一行,我需要进行批处理。 我没有找到如何使用sap.ui.model.odata.v2.ODataModel创建用于上载数据的工作批处理

请给我一些建议。

在调用oModel.update之前,将UseBatch分配为true:

oModel.setUseBatch(true);

为您的:

for (var i = 0; i < data.length; i++) {
            sEntry.Matnr = data[i].Matnr;
            sEntry.Bbynr = data[i].Bbynr;
            sEntry.Prio = data[i].Prio;

oModel.update("/WielosztSet('"+data[i].Bbynr+"')", sEntry, {
                  method: "PUT",  function(){
                alert('Data Updated Successfully');
                 location.reload(true);
                  },function(){
                        sap.m.MessageToast.show('Update failed',{duration:1000});

                  }});
}

在的末尾放置SubmitChanges。

oModel.submitChanges();
oModel.setUseBatch(false); // Make false if you reuse this oModel.

问候。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM