2015-02-10 61 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); 
     }) 
    } 
    } 
}