如何有效地隐藏网格列

时间:2014-06-24 20:23:08

标签: extjs extjs4

我有一个非常大的网格,有很多列。当用户点击按钮时,它会调用一个分析整个商店的功能 - 逐个单元格,如果在特定列中没有发现任何更改,则会隐藏它,此外该列保持可见。通常会有相当多的列被隐藏,但正如我所看到的,这个操作 - 隐藏所有这些渲染的列 - 非常重,并且#34;因此我的浏览器可能会发出警报,代码运行太长。 我这样隐藏着:

var cols=grid.headerCt.getGridColumns(); 
Ext.each(cols, function (item, index, all){
  if(condition) item.setVisible(false); 
});

我尝试使用Ext.suspendLayouts()Ext.resumeLayouts(),但这会导致错误。即使操作现在运行得更快,而不是列只隐藏列'标题隐藏起来。所以,我需要一个更优化和有效的解决方案。

1 个答案:

答案 0 :(得分:3)

suspendLayouts()和后续的resumeLayouts()是其中一种方法。恢复布局后,您只需要调用grid.getView().refresh()

另一种选择是调用reconfigure,但这会从列菜单中删除“隐藏”列。