您的位置:首页 > Web前端 > JavaScript

ext 4.2 grid刷新后 滚动条位置不变

2013-12-27 10:44 645 查看
最近开发遇到问题,每次刷新grid的store之后,总是滚动到最前边,从网上搜到的方法是

在实时刷新的时候数据量过大会出现滚动条。这时候需要记录滚动条的位置。只需在grid的viewConfig属性里面添加如下参数

Js代码  


onLoad : Ext.emptyFn,  
            listeners : {  
                beforerefresh : function(v) {  
                    v.scrollTop = v.scroller.dom.scrollTop;  
                    v.scrollHeight = v.scroller.dom.scrollHeight;  
                },  
                refresh : function(v) {  
                    v.scroller.dom.scrollTop = v.scrollTop  
                            + (v.scrollTop == 0  
                                    ? 0  
                                    : v.scroller.dom.scrollHeight  
                                            - v.scrollHeight);  
                }  
            }  

 

如果全部grid都想实现这个功能可以这样

 

Js代码  


Ext.override(Ext.grid.GridView, {  
    scrollTop : function() {  
        this.scroller.dom.scrollTop = 0;  
        this.scroller.dom.scrollLeft = 0;  
    },  
    scrollToTop : Ext.emptyFn  
}); 

但是在ext4.2之后就不能执行了,报错说v.scroller是undefined,所有没有dom。
解决方法是换成下边这样:红色标出

onLoad : Ext.emptyFn,  
            listeners : {  
                beforerefresh : function(v) {  
                    v.scrollTop = v.el.dom.scrollTop;  
                    v.scrollHeight = v.el.dom.scrollHeight;  
                },  
                refresh : function(v) {  
                    v.el.dom.scrollTop = v.scrollTop  
                            + (v.scrollTop == 0  
                                    ? 0  
                                    : v.el.dom.scrollHeight  
                                            - v.scrollHeight);  
                }  
            } 

如果全部grid都想实现这个功能可以这样

 

Js代码  


Ext.override(Ext.grid.GridView, {  
    scrollTop : function() {  
        this.el.dom.scrollTop = 0;  
        this.el.dom.scrollLeft = 0;  
    },  
    scrollToTop : Ext.emptyFn  
}); 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息