日期:2014-05-16  浏览次数:20370 次

哪位用过extjs的么?Ext.grid.GridPanel 分页问题,麻烦来看看
Ext.grid.GridPanel  分页只有上一页,下一页,首页,尾页的选项,如果数据有500页,我要找200页的数据,难道我要点200次? 这样肯定是不行的。


自己加一个直接跳页的按钮该怎么做呢?麻烦大家给个意见!

------解决方案--------------------
貌似有个输入框,输入页数按回车就可以了啊。
------解决方案--------------------
如果是extjs 4的话可以在store里做文章,它有个loadPage() 类可以实现此功能,比如直接loadPage(5) 加载第五页。但是这样做也要在后台也要做相应的设置,要传到前台三个值:当前页,总页数,和当前页起始数据的index. 参见api(http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.Store-method-loadPage)

如果是extjs3 或更低版本无此功能
------解决方案--------------------
extjs3.4 可扩展PagingToolbar加doLoad(n)
以下是参考,与store无关的例子

Ext.PagingToolbarOnly = Ext.extend(Ext.PagingToolbar, {   
afterPageText:'',
beforePageText:'',
displayInfo:true,
displayMsg:'显示 {0} - {1} / {2}',
emptyMsg:'暂时没有数据',
firstText:'首页',
prevText:'前页',
nextText:'后页',
lastText:'末页',
refreshText:'刷新',
totalCount:0,
doLoad: function(n){
sURL = "controller.asp?action=list&page_no=" + n + "&page_size=" + this.pageSize + "&f=" + escape(sField)+ "&v=" + escape(sValue);
location.href = sURL + "&" + escape(new Date());
},
updateInfo: function(){
if(this.displayItem){
var count = this.store.getCount();
var msg = count == 0 ?
this.emptyMsg :
String.format(this.displayMsg,this.cursor+1, this.cursor+count, this.store.getTotalCount());
            this.displayItem.setText(msg);
}
},
onLoad: function(store, r, o){
if(!this.rendered){
this.dsLoaded = [store, r, o];
return;
}
//if(!o.params 
------解决方案--------------------
 this.store.getTotalCount() == 0) this.cursor = 0;
if(!o.params 
------解决方案--------------------
 this.totalCount == 0) this.cursor = 0;
else this.cursor = (o.params[this.getParams().start] - 1) * this.pageSize + 1;
var d =this.getPageData(), ap = d.activePage, ps = d.pages;
this.afterTextItem.setText(String.format(this.afterPageText, d.pages));
this.inputItem.setValue(ap);
this.first.setDisabled(ap == 1 
------解决方案--------------------
 ps == 0);
this.prev.setDisabled( ap == 1 
------解决方案--------------------
 ps == 0);
this.next.setDisabled(ap == ps 
------解决方案--------------------
 ps == 0);
this.last.setDisabled(ap == ps 
------解决方案--------------------
 ps == 0);
this.refresh.enable();
this.refresh.setDisabled(ps == 0);
this.updateInfo();
}, 
getPageData: function(){
var total = this.totalCount;//this.store.getTotalCount();
return {