SAP UI5-在同一视图中绑定多个表

2020-09-29 21:04发布

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

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


专家您好,

我正在开发一个应用程序,该应用程序在同一视图中包含两个表,假设标题列表表和项目列表表,当用户单击标题表行时,将根据标题的选择填充项目列表。

在行上单击时,我可以绑定标题列表,但不能绑定项目列表,请问如何帮助用户在单击标题表行时绑定项目列表。

这是视图的代码

实体集BU_PARTNERSet和BP_AddressSet属于同一OData服务

 createContent:function(oController){
//创建头表
 var oTable = new sap.ui.table.Table('TB1',{
 标题:"标题列表",
 selectionBehavior:sap.ui.table.SelectionBehavior.Row,
 cellClick:函数(oEvent){oController.getTaskDetail(oEvent)}
 });

        //创建表列
 var oColPartner = new sap.ui.table.Column();
 oColPartner.setLabel('业务合作伙伴');

 var oTextPartner = new sap.m.Text();
 oTextPartner.bindProperty('text',{path:'Partner'});
 oColPartner.setTemplate(oTextPartner);
 oTable.addColumn(oColPartner);

        //创建表列
 var oColType = new sap.ui.table.Column();
 oColType.setLabel('业务类型');

 var oTextType = new sap.m.Text();
 oTextType.bindProperty('text',{path:'Type'});
 oColType.setTemplate(oTextType);
 oTable.addColumn(oColType);

//分配模型
 oTable.placeAt('content');

//创建Item表
 var oTableItem = new sap.ui.table.Table('TB2',{
 标题:"商品详情",
 visibleRowCount:3,
 selectionMode:sap.ui.table.SelectionMode.Single
 });

//添加列
 oTableItem.addColumn(new sap.ui.table.Column({
 标签:new sap.ui.commons.Label({text:'Business Partner'}),
 模板:new sap.ui.commons.TextView({text:" {Partner}"})
 }));

 oTableItem.addColumn(new sap.ui.table.Column({
 标签:new sap.ui.commons.Label({text:'Address Number'}),
 模板:new sap.ui.commons.TextView({text:" {Addrnumber}"})
 }));

//分配模型
 oTableItem.placeAt('content');
 

这是控制器的代码

 onInit:function(){
    
    //创建URL
  var ourl =/sap/opu/odata/sap/ZBU_PARTNER_SRV/';
//创建OData模型
 var oModel = new sap.ui.model.odata.ODataModel(ourl,{json:'true'});
//获取表
 var xcore = sap.ui.getCore();
 var oTable = xcore.byId('TB1');
//设置OData模型
 oTable.setModel(oModel);

//绑定行
 oTable.bindRows('/BU_PARTNERSet');
 }

 ***************事件**********************************  ***********

//获取任务详细信息
 getTaskDetail:function(oEvent){

    //创建URL
  var ourl ='sap/opu/odata/sap/ZBU_PARTNER_SRV/';
//创建OData模型
         var oModelItem = new sap.ui.model.odata.ODataModel(ourl,{json:'true'});
//读取单元格行数据
 var context = oEvent.getParameters()。rowBindingContext;
//读取伙伴键值
 oPartner = context.getObject('合作伙伴')

//获取表
 var xcore = sap.ui.getCore();
 var oTableItem = xcore.byId('TB2');

//设置过滤器
 var ofilter = new sap.ui.model.Filter({
 路径:"合作伙伴",
 运算符:sap.ui.model.FilterOperator.EQ,
 值1:oPartner
 });

 oTableItem.bindRows({path:'/BP_AddressSet',filters:[ofilter]});
 

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

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


专家您好,

我正在开发一个应用程序,该应用程序在同一视图中包含两个表,假设标题列表表和项目列表表,当用户单击标题表行时,将根据标题的选择填充项目列表。

在行上单击时,我可以绑定标题列表,但不能绑定项目列表,请问如何帮助用户在单击标题表行时绑定项目列表。

这是视图的代码

实体集BU_PARTNERSet和BP_AddressSet属于同一OData服务

 createContent:function(oController){
//创建头表
 var oTable = new sap.ui.table.Table('TB1',{
 标题:"标题列表",
 selectionBehavior:sap.ui.table.SelectionBehavior.Row,
 cellClick:函数(oEvent){oController.getTaskDetail(oEvent)}
 });

        //创建表列
 var oColPartner = new sap.ui.table.Column();
 oColPartner.setLabel('业务合作伙伴');

 var oTextPartner = new sap.m.Text();
 oTextPartner.bindProperty('text',{path:'Partner'});
 oColPartner.setTemplate(oTextPartner);
 oTable.addColumn(oColPartner);

        //创建表列
 var oColType = new sap.ui.table.Column();
 oColType.setLabel('业务类型');

 var oTextType = new sap.m.Text();
 oTextType.bindProperty('text',{path:'Type'});
 oColType.setTemplate(oTextType);
 oTable.addColumn(oColType);

//分配模型
 oTable.placeAt('content');

//创建Item表
 var oTableItem = new sap.ui.table.Table('TB2',{
 标题:"商品详情",
 visibleRowCount:3,
 selectionMode:sap.ui.table.SelectionMode.Single
 });

//添加列
 oTableItem.addColumn(new sap.ui.table.Column({
 标签:new sap.ui.commons.Label({text:'Business Partner'}),
 模板:new sap.ui.commons.TextView({text:" {Partner}"})
 }));

 oTableItem.addColumn(new sap.ui.table.Column({
 标签:new sap.ui.commons.Label({text:'Address Number'}),
 模板:new sap.ui.commons.TextView({text:" {Addrnumber}"})
 }));

//分配模型
 oTableItem.placeAt('content');
 

这是控制器的代码

 onInit:function(){
    
    //创建URL
  var ourl =/sap/opu/odata/sap/ZBU_PARTNER_SRV/';
//创建OData模型
 var oModel = new sap.ui.model.odata.ODataModel(ourl,{json:'true'});
//获取表
 var xcore = sap.ui.getCore();
 var oTable = xcore.byId('TB1');
//设置OData模型
 oTable.setModel(oModel);

//绑定行
 oTable.bindRows('/BU_PARTNERSet');
 }

 ***************事件**********************************  ***********

//获取任务详细信息
 getTaskDetail:function(oEvent){

    //创建URL
  var ourl ='sap/opu/odata/sap/ZBU_PARTNER_SRV/';
//创建OData模型
         var oModelItem = new sap.ui.model.odata.ODataModel(ourl,{json:'true'});
//读取单元格行数据
 var context = oEvent.getParameters()。rowBindingContext;
//读取伙伴键值
 oPartner = context.getObject('合作伙伴')

//获取表
 var xcore = sap.ui.getCore();
 var oTableItem = xcore.byId('TB2');

//设置过滤器
 var ofilter = new sap.ui.model.Filter({
 路径:"合作伙伴",
 运算符:sap.ui.model.FilterOperator.EQ,
 值1:oPartner
 });

 oTableItem.bindRows({path:'/BP_AddressSet',filters:[ofilter]});
 
付费偷看设置
发送
4条回答
半个程序猿
1楼 · 2020-09-29 21:37.采纳回答

您好 Ramakrishna

在listItem表中,您未设置 模型,您将直接绑定行。

 oTableItem.setModel(oModelItem); //缺少您的代码

感谢

Viplove

闻人可可
2楼-- · 2020-09-29 21:48

我可以看到您的oData示例吗? 那将帮助我更好地调试。

我想我们可以在oData服务中进行过滤,而不是在客户端应用过滤器。

您是否调试过以查看" oPartner = context.getObject('Partner')"中oPartner的值是什么?

请共享示例数据。

尝试这种方法。

  • 在Controller初始化中:在视图级别而不是表控件级别附加模型
//创建网址
 var ourl ='sap/opu/odata/sap/ZBU_PARTNER_SRV/';
//创建OData模型
 var oModelItem = new sap.ui.model.odata.ODataModel(ourl,{
 json:" true"
 });

//设置视图
 this.getView()。setModel(oModel); 
SAP小菜
4楼-- · 2020-09-29 21:42

感谢Murali:-)

一周热门 更多>