XMLView绑定中的动态过滤器

时间:2019-08-15 08:04:29

标签: sapui5

在我的应用程序中,我有一个微型图表,该微型图表直接绑定到XML视图中的OData-Entityset。

我现在想将过滤器传递给该请求。但是,此过滤器应基于用户选择的设置是动态的。

用户选择一个时间范围,然后将该值存储在另一个View Local JSON Model中。

是否可以基于该值构建OData绑定过滤器。

此处与过滤器的绑定不起作用。

我尝试了各种组合:

  • {filterModel> / status}
  • {path:'filterModel> / status'}
<microchart:InteractiveDonutChart id="microDonutChart"
        segments="{path: '/BookingStOverviewSet', 
                   filters : [ 
                       { path : 'Txt04', 
                         operator : 'GE', 
                         value1 : {filterModel>/status} 
                       } 
                   ]
                  }">
    <microchart:segments>
     <microchart:InteractiveDonutChartSegment label="{Txt30}" value="{Count}"/>
    </microchart:segments>
</microchart:InteractiveDonutChart>

控制器中使用Filter值构建JSON模型的逻辑:

onInit: function () {
    var filterModel = new sap.ui.model.json.JSONModel(
             {
               "startOfCal": new Date(),
               "endOfCal": new Date(), 
               "status": '0001'
            });

    this.getView().setModel(filterModel, 'filterModel');
}

2 个答案:

答案 0 :(得分:0)

遗憾的是,SAPUI5不支持通过XML进行动态过滤,您需要在应用程序的JS部分中解决该问题。

答案 1 :(得分:0)

可以通过以下方式开发解决方法:

var filters = [];
var myFilter= new sap.ui.model.Filter("Txt04", sap.ui.model.FilterOperator.EQ, filterModel.getProperty("/status"));
            filters.push(myFilter);
var microChart = this.getView().byId("microDonutChart") 
microChart.bindSegments({
                path: "/BookingStOverviewSet",
                filters: filters,
                template: microChart.getBindingInfo("items").template
            });
相关问题