Ext4.2 grid(store)分页获取当前页,总页数,是否是最后一页

获取当前页

store.currentPage

  

总页数

一.从pagingtoolbar里获得

getPageData在api里看不到,但是在源码里有,可以调用

pagingtoolbar.getPageData().pageCount

不通过id得到pagingtoolbar(怕id多了冲突)(用bbar声明的也可以取到)

grid.getDockedItems('toolbar[dock="bottom"]')[0].getPageData().pageCount

pagingtoolbar#getPageData源码

// @private
    getPageData : function(){
        var store = this.store,
            totalCount = store.getTotalCount();

        return {
            total : totalCount,
            currentPage : store.currentPage,
            pageCount: Math.ceil(totalCount / store.pageSize),
            fromRecord: ((store.currentPage - 1) * store.pageSize) + 1,
            toRecord: Math.min(store.currentPage * store.pageSize, totalCount)

        };
    },

二.从store里获得,需要计算

function getStoreTotalPage(store){
	var totalCount = store.getTotalCount();
	var pageSize = store.pageSize; //default: 25
	//var totalPage = (totalCount + pageSize -1) / pageSize; //js的不是整除
	var totalPage = Math.ceil(totalCount/pageSize);
	return totalPage;
}

这个可以给store加扩展方法

1.Ext似乎不允许这样扩展 Ext.data.Store.prototype.getTotalPage = function(){ }

2.Ext的扩展会产生一个新的类,不是我要的,

3.可以改源码,把方法加上,那还得压缩,还不如像上面单定义一个方法简单,

//查找Ext.define('Ext.data.Store',加入方法
getTotalPage: function(){
    var totalCount = this.getTotalCount();
    var pageSize = this.pageSize; //default: 25
    var totalPage = Math.ceil(totalCount/pageSize);
    return totalPage;
},

是否是最后一页

1.当前页是否是最后一页

store.currentPage == grid.getDockedItems('toolbar[dock="bottom"]')[0].getPageData().pageCount

  

store.currentPage == getStoreTotalPage(store)

2.当前页的最后一条和总记录做对比

先判断store.last()是不是个对象

if(!(store.last()) || store.indexOfTotal(store.last()) == store.getTotalCount()-1){
     alert(true);
}

  

猜你喜欢

转载自happyqing.iteye.com/blog/2207805