2014-06-24 61 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