2016-03-23 10 views
0

私はExtJSを初めて使いました。 私は、列がFullNameのグリッドのストアを持っていて、そのストアをラストネームまたはmiddlenameでフィルタリングしたいと考えています。 私はこのコードでは、このコード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(); 
       } 
      } 
     } 
    } 
] 

を使用している私は以降のファーストネームとでフィルタをかけることができますが、私はmiddlenameまたは姓でフィルタリングします。

答えて

0

グリッドには "FullName"という列がありますが、ストアにはfirstname、middlename、lastnameの各フィールドが必要です。それ以外の場合は、中と姓の基本でフィルタすることができるように、一意の名前が一貫した形式であると仮定する必要があります。

独自のカスタムフィルタ機能書き込みに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; 
 
    }); 
 
};

アウトhttp://docs.sencha.com/extjs/6.0/6.0.1-classic/#!/api/Ext.data.AbstractStore-method-filterBy

filterBy のためのドキュメントを
関連する問題