【问题标题】:ExtJS 6 Filter store of grid by lastname or middlenameExtJS 6 按姓氏或中间名过滤网格存储
【发布时间】:2016-07-10 22:56:54
【问题描述】:

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

使用此代码,我只能按名字及以后过滤,但我想按中间名或姓氏过滤。

【问题讨论】:

    标签: javascript extjs filter store extjs6


    【解决方案1】:

    您的网格可以有一个“全名”列,但您的商店应该有单独的名字、中间名和姓氏字段。否则,您只需假设全名的格式一致,就可以根据中间名和姓氏对其进行过滤。

    您可以使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 2018-03-19
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多