我正在尝试使用我需要为网格实现的功能来解决问题。这个网格应该使用从“Ext.ux.grid.FiltersFeature”扩展的自定义“过滤器”,这个组件工作正常,因为它适用于我实现的其他网格。问题是我现在要实现的网格,不会像我之前实现的那样在第一时刻加载列;该网格有一个控制器,它使用“重新配置”方法根据“存储”创建列。
例如:
grid.reconfigure(store, cols);
我见过很多关于如何添加单个过滤器等的示例,但是他们使用的是"ftype: "filters"
,我需要专门使用我的"ftype: mycustomfilter"
。我怎么能这样做呢?我尝试了一切,但似乎没有任何工作,我对此感到困惑。
以下是我的一些代码:
控制器中的部分代码:
if (refreshGrid) {
var cols = this.createGridColumns();
//This is the method that loads my column based on the store
//(which I retrieve from Ajax request)
grid.reconfigure(store, cols);
oldStore.destroyStore();
} else {
this.mergeFn.call(this, values, store);
grid.view.refresh();
}
我尝试做的是在重新配置网格后添加功能:
grid.reconfigure(store, cols);
//Then I add this portion of code:
grid.features = [{
ftype: 'customfilterfeature',
autoReload: false,
local: true,
filters: [{type: 'list', dataIndex: 'activity'},
{type: 'list', dataIndex: 'datetime'}]
}]
有没有人知道如何实现这一目标?因为这根本不起作用,所以不显示过滤器。任何帮助将非常感激。提前谢谢。
答案 0 :(得分:1)
我们必须在几个网格上执行此操作。
我们从Ext.ux.grid.filter.Filter扩展,然后在列的基础上使用这些过滤器,而不是网格本身。这样,每列可以指定他们想要的过滤器,每次重新配置网格时都会更改。
只需要在控制器中使用过滤器类扩展,您就可以这样使用它:
var columnsDef: [
{ text: 'Column Name', dataIndex:'foo', filter: { type: 'yourCustomFilterAlias'}},
...
];
grid.reconfigure(store, columnsDef);
之后,只需覆盖自定义Filter类中的正确方法即可。
希望这会有所帮助。