2016-03-23 84 views
0

我是ExtJS的新手。 我有一個網格的商店,有一列全名,我想通過姓或中間名過濾商店。 我已經使用這個代碼ExtJS 6按姓氏或中間名過濾網格的商店

tbar: [ 
    'Search', { 
     xtype: 'textfield', 
     listeners: { 
      specialkey: function(field, e) { 
       if(e.getKey() == e.ENTER) { 
        var texto = field.getValue(); 
        store_Pessoas.removeFilter('filtersIdPessoasValor'); 
        if(isNaN(texto)) { 
         store_Pessoas.addFilter({ 
          id: 'filtersIdPessoasValor', 
          property: 'tFullName', 
          value: texto 
         }); 
        store_Pessoas.load(); 
       } 
      } 
     } 
    } 
] 

有了這個代碼,我只能通過名字和起過濾器,但我想通過中間名或姓氏進行過濾。

回答

0

您的網格可以有一個「FullName」列,但您的商店應該爲名,中間名和姓氏分開字段。否則,你只需要假定全名的格式是一致的,以便能夠在中間和姓氏的基礎上進行過濾。

可以使用filterBy編寫自己的自定義濾鏡功能 -

var texto = field.getValue(); 
 
store_Pessoas.clearFilter(); 
 
if (isNaN(texto)) { 
 
    store_Pessaoas.filterBy(function(record) { 
 
    var fullname = record.get('FullName'); 
 
    //Assuming that your name has a structure of FIRSTNAME MIDDLENAME LASTNAME 
 
    var names = fullname.split(" "); //splits the string into an array of 3 
 
    // names[1] - middlename/names[2] - lastname 
 
    if (names[1].toLowerCase().indexOf(textto.toLowerCase()) !== -1 || names[2].toLowerCase().indexOf(textto.toLowerCase()) !== -1) { 
 
     return true; 
 
    } 
 
    return false; 
 
    }); 
 
};

結帳的文檔的filterBy http://docs.sencha.com/extjs/6.0/6.0.1-classic/#!/api/Ext.data.AbstractStore-method-filterBy