首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在sap.m.list中对过滤项进行裁剪

如何在sap.m.list中对过滤项进行裁剪
EN

Stack Overflow用户
提问于 2016-05-04 07:43:48
回答 4查看 7.9K关注 0票数 0

我已经有了一个sap.m.list,它已经基于一个property.Now进行了过滤,我再次需要为该列表应用过滤器来实现实时搜索。

代码语言:javascript
复制
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。

代码语言:javascript
复制
     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);

如何实施??有什么建议吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-05-08 13:06:36

我用过滤器中的'and‘条件来解决它

代码语言:javascript
复制
 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);

工作精良

票数 0
EN

Stack Overflow用户

发布于 2016-05-04 11:22:45

livechange添加到textfield中,并调用一个函数来筛选列表。

代码语言:javascript
复制
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");
票数 0
EN

Stack Overflow用户

发布于 2016-05-06 09:05:17

我想你有两个选择:

  1. 应用原始筛选器,然后应用附加筛选器。
  2. 为最初筛选的列表创建一个新实例: //假设您已经声明了列表(initialList和newList) // <..>之间的值应该替换为jQuery.each (initialList、function (索引)、item) { if (item )。== ){ //您可以向新的列表项添加一个附加字段,如: item"= ){newList.push(项);//将此项添加到新的数组/列表} newListModel.setData(newList);//假定newListModel已创建//绑定到控件
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37021484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档