2012-08-10 65 views
1

在extjs存储过滤器功能如下:Extjs4存储过滤器 - 在字符串内搜索

store.filter(filters,value);这是=> store.filter(列名,要搜索的字符串);

该值与连续存储的值相匹配,如果我必须在“abcd”中搜索“bc”,它不会找到它,但是当我给出ab时它会匹配,因为abcd以ab开头。

如何在存储过滤器中使用字符串过滤值,我想获得所有匹配字符串的结果,而不仅仅是字符串的开始。

回答

3

使用自定义过滤器功能。下面是一个未经测试的例子:

var myfilter = new Ext.util.Filter({ 
    filterFn: function(rec) { 
     return rec.get('columnname').indexOf('bc') > -1; 
    } 
}); 

store.filter(myfilter); 

或者使用filterBy方法。

store.filterBy(function(rec){ 
      return rec.get('columnname').indexOf('bc') > -1; 
     } 
    }); 
+0

什么是regEx? – user1296632 2012-08-13 22:09:20

+0

我已更新示例以使用indexOf()方法。它应该是直截了当的。 – jorel 2012-08-14 01:02:50

+0

如果你想使用正则表达式搜索,那也很简单。 var regex =/bc /; store.filterBy(function(rec){ return regex.test(rec.get(“columnname”)); }); – Eric 2012-08-20 21:16:13