Extjs Grid ApplyState 未反映更改 |隐藏问题
Extjs Grid ApplyState not reflecting the changes | Hide issue
当我们有多个父子网格并且想要在加载调用后重新配置网格时,如下所示:
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
这是我一直用来修复隐藏列问题的覆盖。我使用的是 6.6,所以不确定这是否适用于 4.4。此外,您可能不需要 suspend/resume 布局,但也不确定。
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);
}
});
嗯,这仍然是 applyState 的问题。当网格有多个隐藏列并且我们使用 applyState 函数时,它会使我们的网格崩溃。所以我们跳过了隐藏的 属性 部分,尽管它在宽度变化、过滤器等方面工作得很顺利。
listeners: {
'afterrender': function (grid) {
var state =grid.getState();
state.columns[1].hidden= false;
grid.applyState(state);
grid.columns[3].hidden = true;
}
}
如果您手动设置隐藏 属性 列,它将隐藏它。
当我们有多个父子网格并且想要在加载调用后重新配置网格时,如下所示:
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
这是我一直用来修复隐藏列问题的覆盖。我使用的是 6.6,所以不确定这是否适用于 4.4。此外,您可能不需要 suspend/resume 布局,但也不确定。
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);
}
});
嗯,这仍然是 applyState 的问题。当网格有多个隐藏列并且我们使用 applyState 函数时,它会使我们的网格崩溃。所以我们跳过了隐藏的 属性 部分,尽管它在宽度变化、过滤器等方面工作得很顺利。
listeners: {
'afterrender': function (grid) {
var state =grid.getState();
state.columns[1].hidden= false;
grid.applyState(state);
grid.columns[3].hidden = true;
}
}
如果您手动设置隐藏 属性 列,它将隐藏它。