2016-03-23 5 views
0

Я новичок в ExtJS. У меня есть сетка, в которой есть столбец FullName, и я хочу отфильтровать хранилище по имени или названию middlame. Я использовал этот кодExtJS 6 Хранилище фильтров сетки по фамилии или имени middlen

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(); 
       } 
      } 
     } 
    } 
] 

С помощью этого кода можно фильтровать только Firstname и далее, но я хочу, чтобы фильтровать по MiddleName или LastName.

ответ

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; 
 
    }); 
 
};

Checkout Документы для filterBy http://docs.sencha.com/extjs/6.0/6.0.1-classic/#!/api/Ext.data.AbstractStore-method-filterBy

Смежные вопросы