2014-06-24 58 views
1

我有一个很大的网格,有很多列。当用户点击按钮时,它会调用一个函数,它会逐个单元地分析整个商店,如果它没有在特定列中发生变化,则隐藏它,否则该列保持可见状态。通常会隐藏很多列,但正如我所看到的,此操作(隐藏所有这些渲染的列)非常“沉重”,以致于我的浏览器可能会警告代码运行时间过长。 我躲在这样的:如何有效隐藏网格列

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

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

回答

3

suspendLayouts()和随后的resumeLayouts()是一种可行的方法。恢复布局后,您只需拨打grid.getView().refresh()即可。

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

+0

谢谢,先生!你一直都是对的。 – Jacobian