绑定到控件之前,先读取和修改OData V4中的数据

2020-08-21 08:03发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


对我来说,问题是我想在绑定到控件之前对数据进行按摩(读取和修改)以添加其他值,这是我完整的oData V2代码:

 this_.getOwnerComponent()。getModel(" myModel")。read("/img/zprojects",{
                 "异步":是的,
                 "成功":函数(oData){
                     var myArray = [];
                     var pos;

                    //做一些按摩...
                     for(var i = 0; i (a.PROJECT_DESC> b.PROJECT_DESC)?1:-1);
                     myArray.unshift({
                         ID:"-1",
                         PROJECT_DESC:"请选择项目ID" 
});
//完成..然后绑定到控件(setModel) oModel = new sap.ui.model.json.JSONModel(myArray); sap.ui.core.Fragment.byId(" idFragment"," project")。setModel(oModel); }, "错误":函数(oError){ console.log(oError); } });

我可以在OData V2中很容易地做到这一点,如何使用oData V4实现类似的目的?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


对我来说,问题是我想在绑定到控件之前对数据进行按摩(读取和修改)以添加其他值,这是我完整的oData V2代码:

 this_.getOwnerComponent()。getModel(" myModel")。read("/img/zprojects",{
                 "异步":是的,
                 "成功":函数(oData){
                     var myArray = [];
                     var pos;

                    //做一些按摩...
                     for(var i = 0; i (a.PROJECT_DESC> b.PROJECT_DESC)?1:-1);
                     myArray.unshift({
                         ID:"-1",
                         PROJECT_DESC:"请选择项目ID" 
});
//完成..然后绑定到控件(setModel) oModel = new sap.ui.model.json.JSONModel(myArray); sap.ui.core.Fragment.byId(" idFragment"," project")。setModel(oModel); }, "错误":函数(oError){ console.log(oError); } });

我可以在OData V2中很容易地做到这一点,如何使用oData V4实现类似的目的?

付费偷看设置
发送
2条回答
Cikesha
1楼-- · 2020-08-21 08:17

更新:03.04.20:请检查下面的注释,该注释指的是与此同时可用的公共方法。

嗨,唐,

当前,您将需要使用受保护的方法v4.ODataListBinding.getContexts来获取记录。

带有模型参数autoExpandSelect:false:

 function fillJSONModel(){
 var oListBinding = oModel.bindList("/img/People",undefined,undefined,undefined,{$ select:" UserName"});

 oListBinding.getContexts(0,10);
 oListBinding.attachEventOnce(" change",function(oEvent){
 var aContexts = oListBinding.getContexts(0,10),
 oData = {
 人员:aContexts.map(oContext => oContext.getObject())
 };
 oData.People.unshift({UserName:"添加新用户"});
 oJSONModel.setData(oData);
 });
 }
 

带有模型参数autoExpandSelect:true:

 function fillJSONModel(){
 var oListBinding = oModel.bindList("/img/People",未定义,未定义,未定义,{$ select:" UserName"}),
 b刷新;

 函数handleChange(oEvent){
 var aContexts = oListBinding.getContexts(0,10),
 oData;
 如果(b刷新){
 oData = {
 人员:aContexts.map(oContext => oContext.getObject())
 };
 oData.People.unshift({UserName:"添加新用户"});
 oJSONModel.setData(oData);
 }其他{
 oListBinding.attachEventOnce(" change",handleChange);
 }
 }

 oListBinding.getContexts(0,10);
 oListBinding.attachEventOnce(" change",handleChange);
 oListBinding.attachEventOnce(" refresh",function(oEvent){
 oListBinding.getContexts(0,10);
 bRefreshed = true;
 });
 }
 

最诚挚的问候
Mathias。

太Q了
2楼-- · 2020-08-21 08:22

因为SAPUI5 1.70公共方法v4.ODataListBinding#requestContexts 存在并且应该使用。 另请参阅访问控制器代码中的数据

一周热门 更多>