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

来源:互联网 发布:网盘 知乎 编辑:程序博客网 时间:2024/05/16 23:50

最近开发遇到问题,每次刷新grid的store之后,总是滚动到最前边,从网上搜到的方法是

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

Js代码  收藏代码
  1. onLoad : Ext.emptyFn,  
  2.             listeners : {  
  3.                 beforerefresh : function(v) {  
  4.                     v.scrollTop = v.scroller.dom.scrollTop;  
  5.                     v.scrollHeight = v.scroller.dom.scrollHeight;  
  6.                 },  
  7.                 refresh : function(v) {  
  8.                     v.scroller.dom.scrollTop = v.scrollTop  
  9.                             + (v.scrollTop == 0  
  10.                                     ? 0  
  11.                                     : v.scroller.dom.scrollHeight  
  12.                                             - v.scrollHeight);  
  13.                 }  
  14.             }  

 

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

 

Js代码  收藏代码
  1. Ext.override(Ext.grid.GridView, {  
  2.     scrollTop : function() {  
  3.         this.scroller.dom.scrollTop = 0;  
  4.         this.scroller.dom.scrollLeft = 0;  
  5.     },  
  6.     scrollToTop : Ext.emptyFn  
  7. }); 
但是在ext4.2之后就不能执行了,报错说v.scroller是undefined,所有没有dom。

解决方法是换成下边这样:红色标出

  1. onLoad : Ext.emptyFn,  
  2.             listeners : {  
  3.                 beforerefresh : function(v) {  
  4.                     v.scrollTop = v.el.dom.scrollTop;  
  5.                     v.scrollHeight = v.el.dom.scrollHeight;  
  6.                 },  
  7.                 refresh : function(v) {  
  8.                     v.el.dom.scrollTop = v.scrollTop  
  9.                             + (v.scrollTop == 0  
  10.                                     ? 0  
  11.                                     : v.el.dom.scrollHeight  
  12.                                             - v.scrollHeight);  
  13.                 }  
  14.             } 

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

 

Js代码  收藏代码
  1. Ext.override(Ext.grid.GridView, {  
  2.     scrollTop : function() {  
  3.         this.el.dom.scrollTop = 0;  
  4.         this.el.dom.scrollLeft = 0;  
  5.     },  
  6.     scrollToTop : Ext.emptyFn  
  7. }); 

0 0