2015-02-10 62 views
0

我想过滤下面的商店结果。 我有textbox,如果我写入任何东西,那么它应该相应地过滤存储。 例如商店的结果是如何过滤Store extjs?

Monday 
Tuesday 
Wednesday 
Thursday 

过滤器应该像如果我键入Mon那么结果应该只有Monday

我试过下面的代码,但没有运气。

items: { 
     xtype: 'textfield', 
     name: 'value', 
     width : '100%', 
     align: 'center', 
     margin: '0 2 2 2', 
     listeners : { 
      change: function(field, newValue, oldValue, eOpts) { 
      var gridRecords = Ext.getCmp('Grid').getStore(); 
      gridRecords.filter({ 
           property: 'value', 
           value: newValue, 
           anyMatch: true, 
           caseSensitive: false 
               }); 
              } 
             } 
             } 

谢谢。

+0

你可以更新代码的其余部分来显示这个过滤器在哪里被应用?例如文本框事件? – mindparse 2015-02-10 18:24:49

+0

已更新的代码代码 – webCoder 2015-02-10 18:30:05

+0

确实发生了变化事件,你可以看到什么newValue是如果你添加一个断点? – mindparse 2015-02-10 18:37:51

回答

0

而不是使用的过滤器的对象,传值,如下所示:

gridRecords.filter('value',newValue,true,false); 
1

如果您正在使用的ExtJS 4,那么你就需要清除以前的过滤器。如文档所述,任何过滤器都应用于之前的过滤器。所以在过滤店面电话gridRecords.clearFilter()之前。

这里是一个工作JSFiddle让你看看。

0

下面的代码将按照您询问的方式过滤商店,而且不区分大小写。您还可以键入字符串的任何部分,如'es',商店将过滤显示“星期二”和“星期三”。

items: { 
    xtype: 'textfield', 
    name: 'value', 
    width : '100%', 
    align: 'center', 
    margin: '0 2 2 2', 
    listeners : { 
    change: function(field, newValue, oldValue, eOpts) { 
     var gridRecords = Ext.getCmp('Grid').getStore(); 
     gridRecords.filterBy(function(record){ 
     var value = record.get('value').toLowerCase(); 
     return (value.indexOf(newValue.toLowerCase()) != -1); 
     }) 
    } 
    } 
}