我已经有了一个sap.m.list,它已经基于一个property.Now进行了过滤,我再次需要为该列表应用过滤器来实现实时搜索。
filterList:function(evt){
debugger;
var filters = [];
var oFilter="";
var query = evt.oSource.mProperties.value;
if (query && query.length > 0) {
var filter = new sap.ui.model.Filter("CLTYPE", sap.ui.model.FilterOperator.Contains, query);
filters.push(filter);
var filter1 = new sap.ui.model.Filter("CLCAT", sap.ui.model.FilterOperator.Contains, query);
filters.push(filter1);
var filter2 = new sap.ui.model.Filter("CLNUM", sap.ui.model.FilterOperator.Contains, query);
filters.push(filter2);
oFilter = new sap.ui.model.Filter( filters, false );
}
// update list binding
var list = sap.ui.getCore().byId("List");
var binding = list.getBinding("items");
binding.filter(oFilter);
},在这里,我的列表已经是filtered.here list.getBinding(' items ')了,它将给我所有的条目,而不是过滤的items。
obj[filterParam] = context;
var contextClauses=_.where(clauses,obj);
sap.ui.getCore().getModel('ClauseModel').setProperty("/DATA/CURRENTCLAUSES",contextClauses);
// update list binding
var list = sap.ui.getCore().byId("List");
var binding = list.getBinding("items");
binding.filter(oFilter);如何实施??有什么建议吗?
发布于 2016-05-08 13:06:36
我用过滤器中的'and‘条件来解决它
var mainFilter=new sap.ui.model.Filter(parameter,sap.ui.model.FilterOperator.Contains,context);
var query =evt.getParameter("newValue");
if (query && query.length > 0)var filter1= new sap.ui.model.Filter("CLNAME",sap.ui.model.FilterOperator.Contains,query);
filtersArr1.push(filter1);
filtersArr1.push(mainFilter);
var filter2 = new sap.ui.model.Filter("CLNUM",sap.ui.model.FilterOperator.Contains, query);
filtersArr2.push(filter2);
filtersArr2.push(mainFilter);oFilter1 = new sap.ui.model.Filter(filtersArr1,true);oFilter2 = new sap.ui.model.Filter(filtersArr2,true);filterGroup.push(oFilter1,oFilter2);oFilter4 = new sap.ui.model.Filter(filterGroup,false);
binding.filter(oFilter4);工作精良
发布于 2016-05-04 11:22:45
将livechange添加到textfield中,并调用一个函数来筛选列表。
new sap.ui.commons.TextField({type:"Text",
value:"",
liveChange: function(oEvent){
//Now call a function to filter your list.
filterList(oEvent,oStorage.get("previousFilteredList"));
}});
filterList: function(oEvent,yourObj){
var like = oEvent.getParameter("liveValue");
var oFilter = new sap.ui.model.Filter("name",
sap.ui.model.FilterOperator.StartsWith,like);
var element = sap.ui.getCore().getElementById("sample");
var listBinding = element.getBinding("items");
listBinding.filter([oFilter]);
//Add the filtered object oStorage after every filter to access the previous filtered data
//oStorage.put("previousFilteredList","yourobj");
},
//Wherever you filter your data first.
oStorage = jQuery.sap.storage("session");
oStorage.put("previousFilteredList","yourobj");发布于 2016-05-06 09:05:17
我想你有两个选择:
https://stackoverflow.com/questions/37021484
复制相似问题