ExtJS 6按姓氏或中间名过滤网格存储

时间:2016-03-23 15:05:46

标签: javascript extjs filter store extjs6

我是ExtJS的新手。 我有一个网格存储,其中包含 FullName 列,我想按姓氏或中间名过滤商店。 我使用过这段代码

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

使用此代码我只能按名字和名称进行过滤,但我想按中间名或姓氏过滤。

1 个答案:

答案 0 :(得分: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;
  });
};




签出filterBy的文档 http://docs.sencha.com/extjs/6.0/6.0.1-classic/#!/api/Ext.data.AbstractStore-method-filterBy