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

本文介绍如何使用ExtJS框架从pagingtoolbar和store中获取当前页和总页数的方法,包括直接调用getPageData获取pageCount及通过计算store.getTotalCount实现自定义方法。

 

获取当前页

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);
}

  

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值