点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有一个页面页面,该页面带有3个单选按钮和下面的一个智能表。 当我们登陆页面时,第一个单选按钮选项被选中,并且该选择的数据被获取并显示在表格中。 但是,当我更改单选按钮选择时,将获取新数据,并且可以在表中看到它,但是忙碌指示器不会停止并且看起来正在缓冲。 另外,在网络中,我看到了多个调用(即使是第一次进入页面,现在也发生了,即使我只执行一次,也看到了2个Odata调用)。 我已经编写了onBeforeRebindTable方法,其中传递了过滤器。 在我的OData请求中,我也想通过过滤器来获取数据,否则查询将不正确,并且我也不会从后端获取任何数据。 因此,在调用请求时必须通过过滤器。 但是以某种方式,这还不够,我需要在beforeRedbindTable方法中提及相同的过滤器,否则数据来自后端,但不会显示在表中。
除了我更改的第二个过滤器属性之外,用于获取任何单选按钮选择上的数据的代码如下:
anyRadioButtonSelected:function(){ var oModel,oView; var oFilters = []; oFilters.push(新sap.ui.model.Filter("别名",sap.ui.model.FilterOperator.EQ,"名称")); oFilters.push(新sap.ui.model.Filter(" RadioButtonOptionX",sap.ui.model.FilterOperator.EQ," X")); var that = this; oModel = new sap.ui.model.odata.ODataModel("/img/sap/opu/odata/sap/service_name/",false); oModel.read("/img/userSet",{ 异步:是的, 过滤器:oFilters, 成功:功能(oData,oResponse){ sap.m.MessageToast.show("已提取数据"); }, 错误:function(err){ sap.m.MessageToast.show("数据提取错误"); } }); oModel.setCountSupported(false); oView = this.getView(); oView.setModel(oModel);
smartTable.view.xml:
我已经给出了beforeRebindTable方法并在其中提到了过滤器。 如果我在这里没有提到过滤器,则由于某种原因该表将保持为空并且不会填充数据。 如果我删除了beforeRebindTable方法-表仍然为空。
我有以下疑问:
a)当我在主oData调用中已经提到过滤器时,为什么必须在beforeRebindTable中提及过滤器。
b)当我第一次使用默认选中单选按钮进入页面时,看到2个呼叫。
1)解码的通话1:sap/opu/odata/sap/service_name/userSet?$ filter = Alias eq'random'和RadioButtonOptionX eq'X'
2)解码的调用2:sap/opu/odata/sap/service_name/userSet?$ skip = 0&$ top = 139&$ filter = Alias eq'random'和RadioButtonOptionX eq'X'&$ select = FullName&$ inlinecount =所有页面
c)如何使忙碌的指标在表中停止(setBusy(false)和BusyIndicator.hide())不起作用-我看到了背后的新数据,但忙碌不会停止。
你好 arati deshpande ,
请在下面找到我的答案:
a )当我已经在主要的oData调用中提到过滤器时,为什么必须在beforeRebindTable中提及过滤器。
不理解这个问题。 您在哪里提到了主要odata调用中的过滤器。
我的假设是,您正在将anyRadioButtonSelected中的代码编写为获取数据,为什么要这样做? 你不应该打电话给读对吗?
智能表将自动调用内部的read ..那么您为什么编写该代码呢?
b)当我第一次使用默认选择单选按钮进入页面时,我 请参阅2个呼叫。
1)解码的呼叫1:sap/opu/odata/sap/service_name/userSet?$ filter = Alias eq'random'和RadioButtonOptionX eq'X'
2)解码的呼叫2 :sap/opu/odata/sap/service_name/userSet?$ skip = 0&$ top = 139&$ filter = Alias eq'random'和RadioButtonOptionX eq'X'&$ select = FullName&$ inlinecount = allpages
在a =>点,您正在手动调用odata服务,smart tbale将再次发送读取请求,因此有2个调用。 再一次,您不需要再次手动调用read,智能表将处理它。
c)如何使繁忙的指标停止在表中(setBusy(false)和BusyIndicator.hide( ))不起作用-我看到了背后的新数据,但是忙碌的事情不会停止。
不确定这个问题。您在onBeforeRebindTable中写了任何代码吗?
谢谢 ,
马西什语
嗨 arati deshpande
为什么要在单选按钮选择事件中再次创建模型? 没必要。 您还可以创建ODataModel而不是V2.ODataModel。
您可以做的是,在单选按钮选择上,调用smarttable的rebindTable方法
https://ui5.sap.com/#/api/sap.ui.comp.smarttable.SmartTable%23methods/rebindTable
这将触发您的onBeforeRebindTable事件处理程序。
谢谢,
Mahesh
,如果它是智能表, 您不必(或不应)自己进行odata调用。 ui与odatamodel和jsonmodel绑定的工作方式完全不同....
Jun Wu 谢谢您的答复。 我已经修改了我的代码,并在上面的评论中提到了。 我仍然面临问题,我认为这是因为我在onBeforeRebindTable中添加了默认过滤器。
一周热门 更多>