![](/img/trans.png)
[英]SAPUI5 odata.v2.ODataModel Call back of batch request is invoked before batch request is complete
[英]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.