我有一个网格过滤设置在ExtJS 4.1.1.1中运行正常,但是当我尝试升级到4.2.1.883时,我的网格过滤器不再有效,而且我完全难以理解为什么。我想升级,因为4.2.x对我们来说明显更快。我正在使用MVC设置,并尝试以编程方式访问网格的过滤器。也许这里有人可以帮忙!这就是我所拥有的:
// The Filters
var listFilters = {
ftype: 'filters',
autoReload: true,
local: false,
encode: 'encode',
updateBuffer: 750,
filters: [
{ type: 'numeric', dataIndex: 'id' },
{ type: 'string', dataIndex: 'title' }
]
};
// The Columns
var listColumns = [
{
id: 'id',
text: 'ID',
dataIndex: 'id',
width: 150,
filterable: true,
filter: { type: 'numeric' }
},
{
id: 'title',
text: 'Title',
dataIndex: 'title',
width: 75,
filterable: true,
filter: { type: 'string' }
}
];
// The Grid
Ext.define('JP.view.asset.List', {
extend: 'Ext.grid.Panel',
alias: 'widget.assetlist',
id: 'grid',
store: 'Assets', // referenced from another js file, per MVC
layout: 'fit',
features: [ listFilters ], // filters referenced here
columns: listColumns, // columns referenced here
listeners: {
afterrender: function(grid) {
// This works in 4.1.1, does nothing in 4.2.1
grid.filters.createFilters();
// ^^ Cannot call method 'createFilters' of undefined
// :( :(
// Can no longer reference `grid.filters` externally either, e.g.,
// from Ext.tree
}
}
});
任何想法?!我完全被这里难住了。 grid.filters不能再以编程方式访问,也不再在GUI中加载(从列下拉列表中)。在4.1.x中正常工作。
当然,我已经加载了正确的路径等等......
// Load Ext.js MVC Application
Ext.Loader.setConfig({
enabled: true,
paths: { 'Ext.ux': 'javascript/ext-4.2.1/examples/ux' }
});
Ext.require([
'Ext.grid.*',
'Ext.data.*',
'Ext.tree.*',
'Ext.ux.*',
'Ext.ux.grid.FiltersFeature'
]);
没有这样的运气。好像ftype: 'filters'
被网格的features
参数完全忽略了。
谢谢!!!
答案 0 :(得分:1)
这是我们4.2环境中应用的相关代码段。
Ext.application({
...
, paths: {'Ext.ux': '../[Path to ext]/src/ux/' }
, requires: [
'Ext.ux.grid.FiltersFeature'
]
...
});
过滤器就像魅力一样。
答案 1 :(得分:0)
路径应为resources/ux
,或者如果您要使用示例目录中提供的文件,请使用此examples/ux/grid