ExtJS 6.2:为gridcolumn创建自定义筛选器

ExtJS 6.2:为gridcolumn创建自定义筛选器,extjs,filter,grid,extjs6,Extjs,Filter,Grid,Extjs6,我想为我的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 { ty

我想为我的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'
      }
    }
如何在我的应用程序中创建、添加或注册过滤器到-plugin?我真的不明白

提前谢谢

解决方案:

我们在中使用createFilter函数来创建和使用过滤器:

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

});

要添加新的过滤器类型,您必须定义新的类,扩展自或其子类(就像您所做的那样)

看看这个


此外,您还可以检查现有的过滤器代码,了解如何添加自定义菜单或过滤器规则,例如基于F。

它正在工作!非常感谢你。所以我犯的唯一错误是,我指定了错误的名称空间?我真的必须在ext名称空间中定义一个类才能使它工作吗?没有办法在我自己的结构/名称空间中创建一个过滤器并手动将其添加到插件中吗?我认为可以,但必须重写插件代码以接受类/类名,而不仅仅是类型字符串。实际上,应用程序名(Myapp)是视图、控制器模型和存储的名称空间,而插件使用Ext全局对象。我们找到了一个解决方案。您可以使用createFilter函数,该函数未在其文档中列出,但您可以创建插件使用的过滤器。我很快会更新我的问题。