Я хотел бы создать собственный фильтр для моей gridcolumn.ExtJS 6.2: создание настраиваемого фильтра для gridcolumn
Я попытался это:
Ext.define('Myapp.grid.filters.filter.Float', {
extend : 'Ext.grid.filters.filter.Number',
alias : ['grid.filter.float'],
type : 'float',
config : {
serializer : function (f) {
return {
type : 'float',
value : f.value,
property : f.property,
operator : f.operator
};
}
}
});
Затем я попытался использовать фильтр в моем GridColumn:
{
header : 'Foo',
dataIndex : 'bar',
filterable : true,
filter : {
type : 'float'
}
}
Как создавать, добавлять или регистрировать фильтры к gridfilter -plugin в моем приложении ? Я действительно не понимаю.
Заранее спасибо
Решение:
Мы использовали createFilter-функцию в Ext.grid.filters.filter.Base создавать и использовать фильтр:
Ext.define('MyApp.foo.bar.FloatFilter', {
extend : 'Ext.grid.filters.filter.Number',
alias : 'grid.filter.float',
createFilter : function (config, key) {
config.type = 'float';
return this.callParent(arguments);
}
});
Это работает! Большое спасибо. Значит, единственная ошибка, которую я сделал, я указал неправильное пространство имен? Должен ли я действительно определять класс в ext-namespace, чтобы он работал? Невозможно создать фильтр в моей собственной структуре/пространстве имен и добавить его вручную в плагин? – xdn
Я думаю, что вы можете, но вам нужно переопределить код плагина, чтобы принять имя класса/класса, а не просто ввести строку. На самом деле, имя приложения (Myapp) - это пространство имен для ваших представлений, моделей контроллеров и хранилищ, а плагин использует Ext global object. –
Мы нашли решение для этого. Вы можете использовать функцию createFilter в [Ext.grid.filters.filter.Base] (https://docs.sencha.com/extjs/6.2.0/classic/Ext.grid.filters.filter.Base.html) которые не указаны в их документации, но вы можете создать фильтр, который используется плагином. Я скоро обновлю свой вопрос. – xdn