如何从oData响应中获取count属性

2020-08-14 01:49发布

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

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


你好

我在Fiori应用中有一个全屏视图,我们在其中通过控制器内部的table.bindItems()调用oData服务。

项目的绑定工作正常,但是当我们需要在UI上显示项目的总数(例如515)时,就会遇到这种情况。 我们不会从VDM中获得此信息,因此我们计划使用getList()方法的length属性来确定项目总数。 但是由于表的功能不断增长,一次只能读取100个项目,而length属性仅返回100个项目。我已经为模型附加了侦听器attachRequestCompleted(),以便一旦bindItems()请求完成,我就可以获取长度 属性。 但是我的问题是我想要总数。

我在调试中看到,当调用此table.bindItems()时,它将进行oData服务调用,并且在响应中,我可以看到有一个count属性可用,该属性具有项的总数(例如,我为515) ),但如何从控制器内部的响应(可能在我的attachRequestCompleted内部)读取此count属性呢? 我真的很感谢这方面的帮助。 谢谢。

亲切的问候,

浓淡

标签编辑者:迈克尔·阿普比(Michael Appleby)

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

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


你好

我在Fiori应用中有一个全屏视图,我们在其中通过控制器内部的table.bindItems()调用oData服务。

项目的绑定工作正常,但是当我们需要在UI上显示项目的总数(例如515)时,就会遇到这种情况。 我们不会从VDM中获得此信息,因此我们计划使用getList()方法的length属性来确定项目总数。 但是由于表的功能不断增长,一次只能读取100个项目,而length属性仅返回100个项目。我已经为模型附加了侦听器attachRequestCompleted(),以便一旦bindItems()请求完成,我就可以获取长度 属性。 但是我的问题是我想要总数。

我在调试中看到,当调用此table.bindItems()时,它将进行oData服务调用,并且在响应中,我可以看到有一个count属性可用,该属性具有项的总数(例如,我为515) ),但如何从控制器内部的响应(可能在我的attachRequestCompleted内部)读取此count属性呢? 我真的很感谢这方面的帮助。 谢谢。

亲切的问候,

浓淡

标签编辑者:迈克尔·阿普比(Michael Appleby)

付费偷看设置
发送
5条回答
追夢秋陽
1楼-- · 2020-08-14 02:23

嗨,

使用setSizeLimit获取所有记录。

引用JsDoc报告-用于HTML5的SAP UI开发工具包-API参考-sap.ui.model.Model

还应显示$ count OData实体集合中可用的记录数,例如。 http://services.odata.org/OData/OData.svc/Categories/$count

问候,

钱德拉

四川大学会员
2楼-- · 2020-08-14 02:18

嗨钱德拉,

感谢您的建议。

但是我认为就我而言,我们不想获得完整的清单。 我们仍然希望最初只获得100个项目,然后如果用户向下滚动,他/她将看到更多项目。 但是我们已经需要知道项目总数,以便向用户显示消息。 例如 总问题数(515),但该表最初仅显示100,然后在滚动后显示另外100。 因此,将litlit的大小设置为max不会有帮助。

要使用您提到的$ count,我们仍然必须进行另一个我们不希望的oData服务调用。

但是正如我提到的,bindItems()方法调用的响应中已经有一个名为" __count"的属性,我看到它具有正确的计数,但不确定如何在控制器内部检索它。 谢谢。

此致

Ashish

梦想连接
3楼-- · 2020-08-14 02:17

嗨Ashish,

我们目前正面临这个问题,您有解决方案吗?

此致

Madhuri

Aaron 3364
4楼-- · 2020-08-14 02:02

我真的很喜欢这个想法,并将使用它。 谢谢????

总是很"高兴"地看到,有些东西具有API中提到的更多方法,函数或参数????

CPLASF-自律
5楼-- · 2020-08-14 01:59

嗨,

将Odata模型的默认计数模式设置为"内联"。

var sUrl ="网关/网址";

var model = new sap.ui.model.odata.v2.ODataModel(sUrl,true);

model.setDefaultCountMode(" Inline");

如果计数模式为内联,则odata将以以下格式给出结果。

d:{

结果:[{},{}],

__ count:" 1000"

}

__ count将具有总记录。

注意:确保在服务中实现了$ count。

我们可以在afterDataRecevied方法中检索此结果。

谢谢

Bhavya

一周热门 更多>