主详细信息:在过滤器选项卡上显示元素数

2020-09-08 10:14发布

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

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


嗨,

我正在学习使用hana云平台创建fiori应用程序。 我已经创建了一个fiori主细节应用程序,并指定了我的OData模型以及模拟数据(我没有后端服务)。

该应用程序非常简单,母版包含一组元素,其详细信息显示在两个选项卡的"详细信息"视图中。 一个选项卡包含常规信息,第二个选项卡包含一个表。 第二个选项卡的count属性必须包含表的行数。

到目前为止,我一直在尝试获取行数(Detail.controller.js):

 this.byId(" __ table0")。getItems()。length
 

并将其放入标签过滤器的count属性:

 this.byId(" iconTabFilter2")。setCount(this.byId(" __ table0")。getItems()。length);
 

这段代码可以解决问题……但我不知道将其放在哪里。 我把它放在控制器中每个函数的末尾,但是当我测试时,结果是错误的。

示例:我在母版中有两个元素,第一个元素的表包含4行,第二个元素包含0行。两个选项卡的计数均显示为0。 当我使用控制台日志时,这就是我得到的(我将日志放在控制器中每个函数的末尾。左侧的数字是表中元素的数量):

应用首次启动时,将选择第一个主元素。

 0 getEventBus
 0 getRouter
 0 onInit
 0 onRouteMatched
 0 onRouteMatched
 0 getEventBus
 0 fireDetailChanged
 0 fireDetailChanged
 0 getEventBus
 0 onMasterLoaded
 

当我选择母版中的第二个元素时:

 4 onRouteMatched
 4个getEventBus
 4 fireDetailChanged
 4 fireDetailChanged
 0 getEventBus
 0 onRouteMatched
 

当我返回到选择母版中的第一个元素时:

 0 onRouteMatched
 0 getEventBus
 0 fireDetailChanged
 0 fireDetailChanged
 0 getEventBus
 0 onRouteMatched
 

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

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


嗨,

我正在学习使用hana云平台创建fiori应用程序。 我已经创建了一个fiori主细节应用程序,并指定了我的OData模型以及模拟数据(我没有后端服务)。

该应用程序非常简单,母版包含一组元素,其详细信息显示在两个选项卡的"详细信息"视图中。 一个选项卡包含常规信息,第二个选项卡包含一个表。 第二个选项卡的count属性必须包含表的行数。

到目前为止,我一直在尝试获取行数(Detail.controller.js):

 this.byId(" __ table0")。getItems()。length
 

并将其放入标签过滤器的count属性:

 this.byId(" iconTabFilter2")。setCount(this.byId(" __ table0")。getItems()。length);
 

这段代码可以解决问题……但我不知道将其放在哪里。 我把它放在控制器中每个函数的末尾,但是当我测试时,结果是错误的。

示例:我在母版中有两个元素,第一个元素的表包含4行,第二个元素包含0行。两个选项卡的计数均显示为0。 当我使用控制台日志时,这就是我得到的(我将日志放在控制器中每个函数的末尾。左侧的数字是表中元素的数量):

应用首次启动时,将选择第一个主元素。

 0 getEventBus
 0 getRouter
 0 onInit
 0 onRouteMatched
 0 onRouteMatched
 0 getEventBus
 0 fireDetailChanged
 0 fireDetailChanged
 0 getEventBus
 0 onMasterLoaded
 

当我选择母版中的第二个元素时:

 4 onRouteMatched
 4个getEventBus
 4 fireDetailChanged
 4 fireDetailChanged
 0 getEventBus
 0 onRouteMatched
 

当我返回到选择母版中的第一个元素时:

 0 onRouteMatched
 0 getEventBus
 0 fireDetailChanged
 0 fireDetailChanged
 0 getEventBus
 0 onRouteMatched
 
付费偷看设置
发送
6条回答
compass1988
1楼 · 2020-09-08 11:19.采纳回答

我认为我找到了执行此操作的正确方法:

 this.byId(" iconTabFilter2")。setCount(this.byId('__ table0')。getMaxItemsCount());
 
Climb_Ma
2楼-- · 2020-09-08 11:05

嗨,

您建议的解决方案对我有用。

this.byId(" iconTabFilter2")。setCount(this.byId(" __ table0")。getItems()。length);

我已经在controller.js文件中尝试过此操作,在该文件中我获取了事件中的所有请求详细信息,并设置了计数并完成了操作。

非常感谢。

派大星 ヾ
3楼-- · 2020-09-08 11:05

仅需确认一下,当应用程序加载时,您希望该值作为总值显示在选项卡栏上吗?

如果是这样,那么在应用程序加载时是否需要显示此值?

然后我建议将代码放入控制器的init()函数中或 链接到标签栏的一小段代码。

您能否为您的详细信息控制器提供更多代码?

致谢

Chantele

一只江湖小虾
4楼-- · 2020-09-08 10:58

非常感谢Chantele。 这有点奏效。 现在,使用表的updateFinished事件,选项卡上显示了许多项目。 但是,如Sergio所述,显示的数字是表格中可见项目的数字。 这意味着如果我在同时显示的元素数量上设置阈值5,那么计数将一直显示5,直到我要求显示更多元素为止。

我认为我需要的是访问实际的实体集。 当我查看应用程序发出的请求时,没有类似的请求

https://webidetestingsalesorder-xxxxxxxxxxtrial.dispatcher.hanatrial.ondemand.com/sap/opu/odata/sap/SALESORDERXX/SOHeaders('0000000001')/SOItems?$ skip = 0&$ top = 5


(来自销售订单示例)


梦想连接
5楼-- · 2020-09-08 11:01

首先,感谢您列出您尝试过的内容:

this.byId(" __ table0")。getItems()。length ////这只会给您可见的项目数

我的建议是自己提供表ID(因此它是常量),而不是使用动态生成的ID(好像您使用了" __table0",因为将来版本中可能会发生变化,因此可能无法保证使用相同的模式...

您可以做的一件事就是从odata服务中读取项目数-我假设您正在使用odata 服务-可以使用odata url语法完成以下操作:URL/pathToEndPoint?$ count并将其放置到标签或值持有者的商品数量中。

因为当您向后导航并 屏幕上的数字可能不相同,对吗?

hengyuye
6楼-- · 2020-09-08 11:12

感谢您回答塞尔吉奥。

我使用的是模拟数据,我不知道该如何添加网址或获取计数。 如果我可以访问用于填充表格的实体集中的元素数量,那将是很好的选择。

一周热门 更多>