为什么这个功能在Firefox中需要更多时间

时间:2010-09-02 03:33:55

标签: datagrid extjs

在我的网格中,我想设置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) 最后显示全部

1 个答案:

答案 0 :(得分:0)

我说它不依赖于列数,而是取决于网格中的行数。

另外,Firefox中的列隐藏/显示速度一直很慢;对于1列可以接受,但对于26列和很多行来说可能会很慢!

你有启用firebug吗? 如果是,您可以尝试进行性能分析,方法是将console.profile("show/hide cols");置于您要分析的内容之前,然后console.profileEnd();之后。

但是萤火虫本身正在放慢Firefox + ExtJS的速度。