智能表绑定和重新绑定(带有过滤器)问题

时间:2019-12-19 15:18:40

标签: sapui5

我有一个页面页面,该页面带有3个单选按钮和下面的一个智能表。当我们登陆页面时,第一个单选按钮选项被选中,并且该选择的数据被获取并显示在表格中。但是,当我更改单选按钮选择时,将获取新数据,并且可以在表中看到它,但是忙碌指示器不会停止并且看起来正在缓冲。另外,在网络中,我看到了多个调用(现在即使是第一次进入页面,这种情况也会发生,即使我只执行一次,也会看到2个Odata调用)。我写了onBeforeRebindTable方法,其中传递了过滤器。在我的OData请求中,我也想通过过滤器来获取数据,否则查询将不正确,并且我也不会从后端获取任何数据。因此,在调用请求时必须通过过滤器。但是以某种方式,这还不够,我需要在beforeRedbindTable方法中提及相同的过滤器,否则数据来自后端,但不会显示在表中。

除了我更改的第二个过滤器属性之外,用于获取任何单选按钮选择上的数据的代码如下:

Controller.js

anyRadioButtonSelected: function(){ 
    var oModel, oView;
    var oFilters = [];
    oFilters.push(new sap.ui.model.Filter("Alias", sap.ui.model.FilterOperator.EQ, "Name"));
    oFilters.push(new sap.ui.model.Filter("RadioButtonOptionX", sap.ui.model.FilterOperator.EQ, 
    "X"));
    var that = this;
    oModel = new sap.ui.model.odata.ODataModel("/sap/opu/odata/sap/service_name/", false);
    oModel.read("/userSet", {
            async: true,
            filters: oFilters,
            success : function(oData, oResponse) {
                    sap.m.MessageToast.show("Data fetched");
                    },
            error : function(err) {
                    sap.m.MessageToast.show("Data fetch error");
                    }
            });
   oModel.setCountSupported(false);
   oView = this.getView();
   oView.setModel(oModel);
   }

smartTable.view.xml:

<smartTable:SmartTable id="LineItemsSmartTable" entitySet="userSet" tableType="Table" 
 beforeRebindTable="onBeforeRebindTable">

我已经给出了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)和BusyIndi​​cator.hide())不起作用-我看到了背后的新数据,但忙碌不会停止。

0 个答案:

没有答案