Extjs3.3.1 gridview focusRow函数在FIREFOX下的bug

目的:当加载好grid后,用户想grid定位到指定的某一个行,这时候就需要调用focusRow

代码:grid.getView().focusRow(15)//定位到第16行

现象:IE chrome 测试都可以 但是FF依然会定位到最顶部

结果:经过各种测试以及对比浏览器,然后查看源码总算找到问题的根本原因了。。如下源代码是gridview中的一个私有函数,

虽然没去验证过,但是有现象可以断定,该函数是可以再grid。store。load事件里激发该onload事件,

所以 grid.store.loadData(data);grid.getView().focusRow(15),结合以下源码,自然明了了。 FF下(是GECKO 内核)做了一个事件1mS延迟所以导致我们的代码先执行了focusRow,然后在作用scrollToTop。

源码:onLoad : function() {
        if (Ext.isGecko) {
            if (!this.scrollToTopTask) {
                this.scrollToTopTask = new Ext.util.DelayedTask(this.scrollToTop, this);
            }
            this.scrollToTopTask.delay(1);
        } else {
            this.scrollToTop();
        }
    },

解决方案:1修改源码,(没把握就别这么干了), 2重载该方法,这个酌情可以使用, 3, 最安全的方法 setTimtout(function(){ grid.getView().focusRow(15);   },2 )


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值