当我们有多个父子网格并希望在加载调用后重新配置网格时,如下所示:
listeners: {
'afterrender': function (grid) {
var state =grid.getState();
state.columns[1].hidden= true;
grid.applyState(state);
}
}
这种行为甚至在ExtJS 6.5.1上仍然可以重现。
例如 https://www.sencha.com/forum/showthread.php?306941-Apply-state-after-grid-reconfigure
答案 0 :(得分:0)
这是我用来解决隐藏列问题的替代。我使用的是6.6,因此不确定是否可以在4.4中使用。另外,您可能不需要暂停/恢复布局,但也不确定。
Ext.define('MyApp.overrides.Grid', {
override: 'Ext.grid.Panel',
applyState: function () {
this.callParent(arguments);
Ext.suspendLayouts();
Ext.each(this.getColumns(), function (column) {
if (column.hidden) {
column.show();
column.hide();
}
});
Ext.resumeLayouts(true);
}
});
答案 1 :(得分:0)
applyState仍然是一个问题。当网格具有多个隐藏列并且我们使用applyState函数时,它会使网格崩溃。因此,我们跳过了隐藏的属性部分,尽管它对于宽度更改,过滤器等工作正常。
listeners: {
'afterrender': function (grid) {
var state =grid.getState();
state.columns[1].hidden= false;
grid.applyState(state);
grid.columns[3].hidden = true;
}
}
如果您手动设置列的hidden属性,它将被隐藏。