在我的网格中,我想设置3个按钮,允许用户选择要查看的颜色
所以我写了这个函数;它在chrome和safari上很快,但在Firefox上需要花费很多时间。
问题出在哪里?还有另一种方法吗?
function showHideCols(dcols){
thisGrid = Ext.getCmp('myGrid')
thisColModel = thisGrid.getColumnModel()
var hiddenCols = thisColModel.getColumnsBy(function(c){
if(c.hidden==true) return true;
});
var majCols = thisColModel.getColumnsBy(function(c){
if(c.id>17) return true;
});
var editCols = thisColModel.getColumnsBy(function(c){
if(c.id<18) return true;
});
switch(dcols){
case 'maj' :
Ext.each(majCols,function(f){
thisColModel.setHidden(f.id,false)
})
Ext.each(editCols,function(f){
thisColModel.setHidden(f.id,true)
})
break;
case 'edit':
Ext.each(majCols,function(f){
thisColModel.setHidden(f.id,true)
})
Ext.each(editCols,function(f){
thisColModel.setHidden(f.id,false)
})
break;
case 'all' :
Ext.each(hiddenCols,function(f){
thisColModel.setHidden(f.id,false)
})
break;
}
}
我在网格中有26个cols。 首先我从0到17显示(editCols), 秒从18到26(majCols) 最后显示全部
答案 0 :(得分:0)
我说它不依赖于列数,而是取决于网格中的行数。
另外,Firefox中的列隐藏/显示速度一直很慢;对于1列可以接受,但对于26列和很多行来说可能会很慢!
你有启用firebug吗?
如果是,您可以尝试进行性能分析,方法是将console.profile("show/hide cols");
置于您要分析的内容之前,然后console.profileEnd();
之后。
但是萤火虫本身正在放慢Firefox + ExtJS的速度。