点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我想制作一个应用程序,以显示来自OData服务的数据,并且用户可以使用在排序对话框中选择的顺序对数据进行排序。
我是这样的
handleSortingdialogConfirm:function(oEvent){ var oTable = this.byId(" dataTable"), oBinding = oTable.getBinding(" items"), mParams = oEvent.getParameters(), sPath, b下降 sPath = mParams.sortItem.getKey(); bDescending = mParams.sortDescending; aSorters.push(new Sorter(sPath,bDescending,this.fnComparator)); oBinding.sort(aSorters); },
但是,此程序发送请求以" order by"从服务中选择数据。
我认为,此请求是不必要的,因为所有数据已经在客户端中,可以在表中显示。
我想知道如何在不发送请求的情况下对数据进行排序,这意味着在客户端进行排序。
我在Internet上找到了一些示例,但它们仅解释了在XML视图中实现" sorter"属性的静态排序,并且我不确定它是否可以支持用户通过对话框选择排序顺序。
嗨,
根据您的问题,我认为您表的项目绑定是ODataMdel。
您可以将OperationMode设置为 sap.ui.model ODataModel中的.odata.OperationMode.Client 作为 Mahesh Kumar Palavalli 指出:
操作在客户端上执行。 仅当所有条目均已加载到客户端时,此方法才有效。 初始请求会获取完整的集合,过滤和排序不会触发其他请求。
如果要在客户端进行排序,建议您使用以下模式:
在option2中,binding.sort()方法将不发送服务器请求。
服务器端排序-为什么?
发送请求以从服务器选择数据的概念是选择适当的数据,同时最大程度地减少通过网络发送的数据量。 看一下查询:$ orderby查询选项旁边有一个$ top选项,其值是20或100,取决于表的配置。 这是因为表格只会向用户显示该数量的项目。 如果用户向下滚动,则基于项目计数,Table组件将知道应该使用skip和top组合来查询数据的哪一部分。
考虑您有一百万个产品项,并且按字母顺序查询,将发出top = 20的请求。 比您将顺序更改为反向。 您期望看到什么? 是20种商品按逆序排序,还是订购的100万种产品中排在前20名的商品?
此致
Peter
感谢Mahesh,我用您的评论更新了答案
您好宫口信吉
完全同意佩塔尼亚诺
< 但是,还有一种方法可以通过使用operationMode在具有odata绑定的表上进行客户端过滤。 当然,不建议使用此方法。 (如果要使用此方法,请确保使用最大阈值加载UI中的所有数据。)https://ui5.sap.com/#/api/sap.ui.model.odata.v2.ODataListBinding%23constructor
检查以下答案。
https ://answers.sap.com/questions/11999300/client-side-filter-on-sapui5-table.html
-马赫什语
你好 ,
为什么不使用智能表,您在服务器端会自动执行所有这些操作?
佩特·卡塔诺(PéterCatano)是正确的,在提示端进行排序不是一个明智的主意,后端应该执行此操作。
致谢,
约瑟夫
# p#一周热门 更多>