我有一个页面页面,该页面带有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)和BusyIndicator.hide())不起作用-我看到了背后的新数据,但忙碌不会停止。