Фильтр Extjs4.2 для одного столбца и пользователь может использовать разделитель для сопоставления разных строк

Мне нужно отфильтровать один столбец, и пользователь может использовать разделитель для сопоставления разных строк, например: (Поскольку я не мог публиковать изображения, я должен описать menuitme для моего столбца)

Sort Ascending
Sort Descending
Filters =>  Jim|Tom

Пользователь может ввести "Джим | Том" в текстовое поле для фильтрации на сетке.

Но в целом, кажется, не поддерживается Extjs 4.2. Я обнаружил, что применение нескольких значений для одного свойства не работает, как описано выше.

Вот мое определение столбца для этого столбца "Владелец":

{   
    text:'Owner',
    width:50,
    dataIndex:'owner',
    sortable:true,
    filter:{
    type:'string',
    }
},

Как я мог решить эту проблему?

Благодарю.

Alex

1 ответ

Решение

Вам необходимо переопределить строковый фильтр, что-то вроде (не проверено):

Ext.define('MyOverride', {
   override: 'Ext.ux.grid.filter.StringFilter',

    validateRecord : function (record) {
        var val = record.get(this.dataIndex);

        if(typeof val != 'string') {
            return (this.getValue().length === 0);
        }
        val = val.toLowerCase();
        var parts = this.getValue().toLowerCase().split('|'),
            found = false;

        Ext.Array.forEach(parts, function(part) {
            if (val.indexOf(part) > -1) {
                found = true;
            }
        });

        return found;
    }
});
Другие вопросы по тегам