最近开发遇到问题,每次刷新grid的store之后,总是滚动到最前边,从网上搜到的方法是
在实时刷新的时候数据量过大会出现滚动条。这时候需要记录滚动条的位置。只需在grid的viewConfig属性里面添加如下参数
- 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都想实现这个功能可以这样
- Ext.override(Ext.grid.GridView, {
- scrollTop : function() {
- this.scroller.dom.scrollTop = 0;
- this.scroller.dom.scrollLeft = 0;
- },
- scrollToTop : Ext.emptyFn
- });
解决方法是换成下边这样:红色标出
- 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都想实现这个功能可以这样
- Ext.override(Ext.grid.GridView, {
- scrollTop : function() {
- this.el.dom.scrollTop = 0;
- this.el.dom.scrollLeft = 0;
- },
- scrollToTop : Ext.emptyFn
- });