gpt4 book ai didi

javascript - ExtJS 5.1 - 带有 gridfilters 插件的网格在 grid.reconfigure 后中断

转载 作者:行者123 更新时间:2023-11-28 00:38:45 26 4
gpt4 key购买 nike

我正在将一些 ExtJS 4 的内容迁移到 ExtJS 5.1。我有一个网格,它从服务器获取元数据并在元更改事件上重新配置存储:

store: Ext.create('Ext.data.Store', {
model: 'MyModel',
listeners: {
metachange: function (store, meta) {
this.grid.reconfigure(store, meta.columns);
},
scope: this
},
proxy: {
type: 'ajax',
url: '/mygriddata',
reader: {
type: 'json',
rootProperty: 'rows',
totalProperty: 'totalRows'
}
}
})

我还为此网格启用了网格过滤器。当商店第一次加载时,一切正常。我可以按下网格列的触发按钮,列菜单将显示“升序排序”、“降序排序”、“过滤器”,并且我可以使用为该列指定的过滤器(日期、字符串等) .

但是,在存储使用不同的元数据重新加载后,事情就会中断,从而触发metachange事件并调用grid.reconfigure。具体来说,当我单击网格列的触发按钮时,我收到“未定义不是函数错误”,并且列菜单不会出现。

如果我在没有先单击列触发按钮的情况下更改元数据,则不会发生此错误 - 这与构建过滤器菜单项然后重新配置网格有关,这会破坏过滤器菜单项。看来,当我重新配置网格时,我还需要以某种方式刷新过滤器或重建菜单项,但我不知道该怎么做。任何帮助将不胜感激,谢谢!

错误的完整堆栈跟踪:

Uncaught TypeError: undefined is not a function ext-all-debug.js:86455
Ext.define.getDockedItems ext-all-debug.js:86465
Ext.define.getDockingRefIt emsext-all-debug.js:87641
Ext.define.getRefItems ext-all-debug.js:130763
Ext.define.getRefItems ext-all-debug.js:75497
Ext.define.getRefItems ext-all-debug.js:7378
Ext.Base.Base.addMembers.callParent ext-all-debug.js:87640
Ext.define.getRefItems ext-all-debug.js:15057
getItems ext-all-debug.js:15310
cq.Query.Ext.extend._execute ext-all-debug.js:15271
cq.Query.Ext.extend.execute ext-all-debug.js:15480
Ext.apply.query ext-all-debug.js:63058
Ext.define.query ext-all-debug.js:63101
Ext.define.down ext-all-debug.js:101658
Ext.define.showMenuBy ext-all-debug.js:101651
Ext.define.onHeaderTriggerClick ext-all-debug.js:101179
Ext.define.onHeaderCtEvent ext-all-debug.js:11800
fire ext-all-debug.js:18530
Ext.define.fire ext-all-debug.js:18506
Ext.define.publish ext-all-debug.js:18556
Ext.define.doDelegatedEvent ext-all-debug.js:18543
Ext.define.onDelegatedEvent ext-all-debug.js:4402
Ext.Function.ExtFunction.bind.method

最佳答案

我的解决方案:

Ext.define('Overrides.grid.filters.Filters', {
override: 'Ext.grid.filters.Filters',

onReconfigure: function(grid, store, columns, oldStore) {
var me = this;

me.sep = Ext.destroy(me.sep);
if (me.menuItems && me.menuItems[grid.id]) {
me.menuItems[grid.id].destroy();
}

me.callParent(arguments);
}
});

关于javascript - ExtJS 5.1 - 带有 gridfilters 插件的网格在 grid.reconfigure 后中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28178097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com