SAPUI5 过滤器对多个参数进行和操作
SAPUI5 filter with and-operation over multiple arguments
我想为 table 绑定的搜索实现多重过滤器。要求是将多个过滤器与一个和条件相关联:
伪代码:
if(filterA && filter1 || filterB && filter1 || filterC && filter1 ){...}
如何实现?
我尝试了以下方法:
var filter1 = [ new sap.ui.model.Filter("desc", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter2 = [ new sap.ui.model.Filter("costnr", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter3 = [ new sap.ui.model.Filter("location", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter4 = [ new sap.ui.model.Filter("location2", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter5 = [ new sap.ui.model.Filter("street", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter6 = [ new sap.ui.model.Filter("houseno", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter7 = [ new sap.ui.model.Filter("customer", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter8 = [ new sap.ui.model.Filter("ordernr", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flaga", FilterOperator.NE, 'X')];
var oFilterExt = new sap.ui.model.Filter({filters: [filter1,filter2, filter3, filter4, filter5, filter6, filter7, filter8], and: false});
//binding
binding.filter(oFilterExt, sap.ui.model.FilterType.Application);
你在 and 属性 的正确轨道上:
new sap.ui.model.Filter({
and:false,
filters: [
new sap.ui.model.Filter({
and: true,
filters: [
new sap.ui.model.Filter("property1", FilterOperator.Contains, sQuery),
new sap.ui.model.Filter("property2", FilterOperator.Contains, sQuery)
]}),
new sap.ui.model.Filter({
and: true,
filters: [
new sap.ui.model.Filter("property3", FilterOperator.Contains, sQuery),
new sap.ui.model.Filter("property4", FilterOperator.Contains, sQuery)
]}),
new sap.ui.model.Filter({
and: true,
filters: [
new sap.ui.model.Filter("property5", FilterOperator.Contains, sQuery),
new sap.ui.model.Filter("property6", FilterOperator.Contains, sQuery)
]})
]});
我想为 table 绑定的搜索实现多重过滤器。要求是将多个过滤器与一个和条件相关联:
伪代码:
if(filterA && filter1 || filterB && filter1 || filterC && filter1 ){...}
如何实现?
我尝试了以下方法:
var filter1 = [ new sap.ui.model.Filter("desc", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter2 = [ new sap.ui.model.Filter("costnr", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter3 = [ new sap.ui.model.Filter("location", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter4 = [ new sap.ui.model.Filter("location2", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter5 = [ new sap.ui.model.Filter("street", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter6 = [ new sap.ui.model.Filter("houseno", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter7 = [ new sap.ui.model.Filter("customer", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flag", FilterOperator.NE, 'X')];
var filter8 = [ new sap.ui.model.Filter("ordernr", FilterOperator.Contains, sQuery), new sap.ui.model.Filter("flaga", FilterOperator.NE, 'X')];
var oFilterExt = new sap.ui.model.Filter({filters: [filter1,filter2, filter3, filter4, filter5, filter6, filter7, filter8], and: false});
//binding
binding.filter(oFilterExt, sap.ui.model.FilterType.Application);
你在 and 属性 的正确轨道上:
new sap.ui.model.Filter({
and:false,
filters: [
new sap.ui.model.Filter({
and: true,
filters: [
new sap.ui.model.Filter("property1", FilterOperator.Contains, sQuery),
new sap.ui.model.Filter("property2", FilterOperator.Contains, sQuery)
]}),
new sap.ui.model.Filter({
and: true,
filters: [
new sap.ui.model.Filter("property3", FilterOperator.Contains, sQuery),
new sap.ui.model.Filter("property4", FilterOperator.Contains, sQuery)
]}),
new sap.ui.model.Filter({
and: true,
filters: [
new sap.ui.model.Filter("property5", FilterOperator.Contains, sQuery),
new sap.ui.model.Filter("property6", FilterOperator.Contains, sQuery)
]})
]});