片段:如何根据变量值仅从模型中获取数据?

2020-09-07 12:26发布

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

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


尊敬的专家,

我有以下情况:

  • 我们有一个MainView和一个ViewSettingsDialog(用于按类别过滤(之所以有效,因为它独立于用户)和单个值(不起作用))
  • 有一个在登录时被User-ID识别的用户(我的编码中有值)
  • 根据用户的不同,MainView上的表仅包含与其相关的内容(有效)
  • 取决于用户,该片段也应仅显示相关内容(如表中所示)

最后一点是我有问题。 我知道不可能用这样的本地JSON模型进行过滤:

 /emp}'}]}" key ="合作伙伴 " text =" {i18n> ID}">
 <项目>
  
         
  

我不知道如何以某种方式"操纵"或过滤模型,即仅根据用户显示相关数据? 我也阅读了许多有关此问题的博客文章,但无济于事。 我当前用于按下过滤器按钮的代码如下:

 handleFilterButtonPressed:function(){
 var oView;
 var indiModel = this.getOwnerComponent()。getModel(" indiModel");
 oView = this.getView();
 oView.setModel(indiModel);
 this.createViewSettingsDialog(" zindivsel_nmf.view.FilterDialog")。setModel(indiModel);
 this.getView()。addDependent(this.createViewSettingsDialog(" zindivsel_nmf.view.FilterDialog")));
 this.createViewSettingsDialog(" zindivsel_nmf.view.FilterDialog")。open();
 },

您知道如何解决该问题吗?

此致

蒂姆

(14.9 kB)

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

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


尊敬的专家,

我有以下情况:

  • 我们有一个MainView和一个ViewSettingsDialog(用于按类别过滤(之所以有效,因为它独立于用户)和单个值(不起作用))
  • 有一个在登录时被User-ID识别的用户(我的编码中有值)
  • 根据用户的不同,MainView上的表仅包含与其相关的内容(有效)
  • 取决于用户,该片段也应仅显示相关内容(如表中所示)

最后一点是我有问题。 我知道不可能用这样的本地JSON模型进行过滤:

 /emp}'}]}" key ="合作伙伴 " text =" {i18n> ID}">
 <项目>
  
         
  

我不知道如何以某种方式"操纵"或过滤模型,即仅根据用户显示相关数据? 我也阅读了许多有关此问题的博客文章,但无济于事。 我当前用于按下过滤器按钮的代码如下:

 handleFilterButtonPressed:function(){
 var oView;
 var indiModel = this.getOwnerComponent()。getModel(" indiModel");
 oView = this.getView();
 oView.setModel(indiModel);
 this.createViewSettingsDialog(" zindivsel_nmf.view.FilterDialog")。setModel(indiModel);
 this.getView()。addDependent(this.createViewSettingsDialog(" zindivsel_nmf.view.FilterDialog")));
 this.createViewSettingsDialog(" zindivsel_nmf.view.FilterDialog")。open();
 },

您知道如何解决该问题吗?

此致

蒂姆

(14.9 kB)
付费偷看设置
发送
4条回答
Cikesha
1楼-- · 2020-09-07 13:24

嗨,

也许您可以尝试使用自定义控件。

1/您将开发一个自定义控件MyViewSettingsFilterItem,它基于具有新属性(例如" emp")的ViewSettingsFilterItem控件。

此处是构建控件的文档

https://sapui5.hana.ondemand.com /#/topic/8dcab0011d274051808f959800cabf9f.html

2/在您的自定义控件类中,您覆盖了setEmp函数,以便使用正确的过滤器绑定项目

3/在片段中,您将使用自定义控件

该类可能是这样的:

(注意:我没有测试以下代码,只是想了解我的意思)

 sap.ui.define([
 " sap/m/ViewSettingsFilterItem",
 " sap/ui/model/Filter",
 " sap/ui/model/FilterOperator",
 " sap/m/ViewSettingsItem"
 ],函数(ViewSettingsFilterItem,Filter,FilterOperator,ViewSettingsItem){
 "使用严格";
 返回ViewSettingsFilterItem.extend(" my.custom.control.MyViewSettingsFilterItem",{

 元数据:{
             属性:{
                 " emp":{type:" string"}
             }
         },
        渲染器:" sap.m.ViewSettingsFilterItemRenderer",

         setEmp:function(sValue){
         this.setProperty(" emp",sValue);

         var aFilter = [];

         var oTemplate = new ViewSettingsItem({
         键:" {PartnerKey}",
         文字:" {Partner}"
         });

         if(sValue){
         aFilter.push(new Filter(" PartnerKB",FilterOperator.EQ,sValue));
         }

         this.bindItems({
         路径:"/img/EinzelselektionSet",
         过滤器:aFilter,
         模板:oTemplate
         });

         }

 });

 }); 

,您可以像这样在片段中使用控件:

  

致谢

面料

CPLASF-自律
2楼-- · 2020-09-07 13:06

你好,蒂姆,

我不确定这是否会对您有足够好的解决方案,但也许您可以考虑一下:

1。 使用用户设置创建JSON对象。 在JSON中,您可以描述应在片段中显示的参数/选项。

 {userSettings:[user01:{field:value},user02:{field:value}]} 

2。 然后,您可以在打开片段期间阅读已登录用户的参数。

 const oSettings = userSettings [this.sUserId];
 

您可以从该设置创建新的JSON模型,并将其与片段绑定。 还是根据为该用户存储的参数生成片段视图。

wang628962
3楼-- · 2020-09-07 13:07

是的,您无法在静态xml绑定中完成此操作,但是可以使用用于绑定的js代码轻松实现

clever101
4楼-- · 2020-09-07 13:12

尊敬的专家,

感谢您的回答:)我们使用后端编码解决了这个问题。

此致

Tim

一周热门 更多>