1
我想爲我的網格列創建自定義過濾器。ExtJS 6.2:爲網格列創建自定義過濾器
我嘗試這樣做:
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全局對象。 –
我們爲此找到了解決方案。您可以使用[Ext.grid.filters.filter.Base]中的createFilter-Function(https://docs.sencha.com/extjs/6.2.0/classic/Ext.grid.filters.filter.Base.html)它沒有在他們的文檔中列出,但你可以創建一個插件使用的過濾器。我會盡快更新我的問題。 – xdn