在Ext的PagingToolbar主键,需要在store中有两个参数:limit和start,这样PagingToolbar才可以根据这两个参数进行分页处理。
但如果你的后台应用的分页是根据pagenum和pagesize来处理的,那么你就需要做点工作来做一个变通,实现分页的效果。
方法1:不改变Ext组件。
在服务器端获取limit和start的参数,通过运算来得到pagenum,limit可以直接当作pagesize。
这种方式需要你修改服务器端的代码。
方法2:扩展Ext的PagingToolbar组件。
注:以下代码有网上找到,再次感谢作者。
Ext.PagingToolbarEx = Ext.extend(Ext.PagingToolbar, {
afterPageText: '/ {0}',
beforePageText: '页',
displayInfo: true,
displayMsg: '显示 {0} - {1} / {2}',
emptyMsg: '没有数据',
firstText: '第一页',
prevText: '前一页',
nextText: '后一页',
lastText: '最后一页',
refreshText: '刷新',
updateInfo: function(){
if(this.displayEl){
var count = this.store.getCount();
var msg = count == 0 ? this.emptyMsg : String.format(this.displayMsg, this.cursor, this.cursor + count - 1, this.store.getTotalCount());
this.displayEl.update(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;
}
else{
this.cursor = (o.params[this.paramNames.start] - 1) * this.pageSize + 1;
}
var d =this.getPageData(), ap = d.activePage, ps = d.pages;
this.afterTextEl.el.innerHTML = String.format(this.afterPageText, d.pages);
this.field.dom.value = 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.loading.enable();
this.loading.setDisabled(ps == 0);
this.updateInfo();
},
getPageData: function(){
var total = this.store.getTotalCount();
return {
total: total,
activePage: total != 0 && this.cursor == 0 ? 1 : Math.ceil(this.cursor / this.pageSize),
pages: total !=0 && total < this.pageSize ? 1 : Math.ceil(total / this.pageSize)
}
},
onClick: function(which){
var store = this.store;
var d = this.getPageData();
switch(which){
case 'first':
this.doLoad(1);
break;
case 'prev':
this.doLoad(Math.max(1, d.activePage - 1));
break;
case 'next':
this.doLoad(Math.min(d.pages, d.activePage + 1));
break;
case 'last':
this.doLoad(d.pages);
break;
case 'refresh':
this.doLoad(d.activePage);
break;
}
},
onPagingKeydown: function(e){
var k = e.getKey(), d = this.getPageData(), pageNum;
if(k == e.RETURN){
e.stopEvent();
pageNum = this.readPage(d)
if(pageNum >= d.pages){
pageNum = d.pages;
}
else if(pageNum <= 1){
pageNum = 1;
}
this.doLoad(pageNum);
}
else if(k == e.HOME || k == e.END){
e.stopEvent();
pageNum = k == e.HOME ? 1 : d.pages;
this.field.dom.value = pageNum;
}
else if(k == e.UP || k == e.PAGEUP || k == e.DOWN || k == e.PAGEDOWN){
e.stopEvent();
if(pageNum = this.readPage(d)){
var increment = e.shiftKey ? 10 : 1;
if(k == e.DOWN || k == e.PAGEDOWN){
increment *= -1;
}
pageNum += increment;
if(pageNum >= 1 & pageNum <= d.pages){
this.field.dom.value = pageNum;
}
}
}
}
});
Ext.reg('pagingtoolbarex', Ext.PagingToolbarEx);
这种方法的好处就是后台无需做任何修改,比较适合于后台由其他第三方提供的应用场合
分享到:
相关推荐
然而,在实际使用过程中,我们可能会遇到一些问题,比如在点击“下一页”按钮时,加载的数据与预设的查询条件不符。这个问题通常出现在服务器端分页的场景,因为PagingToolbar默认传递的参数只有`start`和`limit`,...
EXTJS分页通常与数据访问对象(DAO)和动作控制器(Action)结合使用,形成一个完整的数据获取和展示流程。下面将详细阐述EXTJS分页的核心概念、实现方法以及DAO和Action在其中的作用。 一、EXTJS分页核心概念 1. ...
PagingToolbar通常与Ext JS的数据存储(如Store)和数据网格(如GridPanel)一起使用,以加载和展示数据的特定部分,而无需一次性加载所有数据,从而提高应用程序的性能。 在标准的Ext JS PagingToolbar中,每页...
TreeStore是ExtJS中用于表示树形数据结构的组件,它可以与各种UI组件(如TreePanel)配合使用,展示层级化的数据。在这个主题中,我们将深入探讨如何结合TreeStore和pagingToolbar实现分页功能。 在传统的表格数据...
参考: Ext.PagingToolbar.js 如有BUG还请各位提出或留言. 附件中有图片, 一看就知道. 用法: var grid = new Ext.grid.GridPanel({ bbar: new Ext.PM3PagingToolbar({ store : store, displayInfo : true, ...
通常,这样的代码会使用EXTJS的事件监听机制,如`addListener`(或其简写`on`)方法,来注册键盘事件。例如: ```javascript var toolbar = new Ext.PagingToolbar({ // 其他配置项... }); toolbar.on('render', ...
非传统分页工具. 简单说明下: ...参考: Ext.PagingToolbar.js 因为我开发测试完这个分页工具后, 电脑上显示刚好是15:00, 所以取名: PM3PagingToolbar 如有BUG还请各位提出或留言. 附件中有图片, 一看就知道.
在本例中,我们使用ExtJS 4.2创建了一个简单的表格控件,并使用Ext.PagingToolbar实现了分页功能。首先,我们创建了一个表格控件grid,并将其渲染到页面上,然后定义了分页工具条bbar。bbar使用Ext.PagingToolbar...
`PagingToolbar`是Flex中用于实现分页功能的组件,通常与数据网格(如`DataGrid`或`AdvancedDataGrid`)一起使用。它提供了一组按钮和显示项,如“上一页”、“下一页”以及当前页数和总页数,帮助用户在大量数据...
Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码Ext grid PagingToolbar分页实例源码
3. **分页栏(Paging Toolbar)**:PagingStore通常与PagingToolbar组件一起使用,PagingToolbar提供了导航按钮(如“上一页”、“下一页”)和页码显示,用户可以通过交互来切换页面。 4. **数据加载和更新**:当...
在Extjs中使用`pagingtoolbar`组件进行分页操作时,通常情况下,当我们点击“下一页”,`store`会自动加载数据。但是,默认情况下`store`只传递了`start`和`limit`两个参数,这意味着如果之前进行了某种查询(例如...
Extremecomponents提供了分页组件,如PagingToolbar,它可以方便地与GridPanel结合使用,实现数据的分页展示。配置分页组件主要涉及设置每页显示的数据量(pageSize)以及连接后台服务获取数据的URL(url)。 接着...
ext PagingToolbar 带参数的翻页
4. **分页**:实现分页功能,需要配置Store的分页参数,如页面大小、总计页数等,并使用PagingToolbar组件来提供用户界面。分页可以提高大型数据集的加载效率,让用户逐页查看数据。 5. **增删改查(CRUD)操作**:...
现在,为了实现分页,我们需要使用`PagingToolbar`组件,并将其附加到DataTable下方: ```javascript var pagingToolbar = new YAHOO.widget.PagingToolbar({ container: "pagingContainer", pages: 10, // 每页...
"Extjs树分页组件扩展"就是为了解决这一问题而设计的,它通过扩展TreeLoader和PagingToolbar,实现了在树形组件中进行分页加载的效果。 **TreeLoader的扩展** TreeLoader是ExtJS中负责异步加载树节点的类。在原生...
总的来说,"ext页面显示行数选择与主子表显示"涉及到EXT JS中GridPanel、Store、PagingToolbar的使用,以及事件监听和组件扩展等核心概念。通过熟练掌握这些知识点,开发者可以构建出更加用户友好的数据展示界面。
`ext-ui-combo-pagesize.js`可能实现了通过下拉框(ComboBox)让用户选择分页大小的功能,而`ext-ui-slider-pagesize.js`则可能使用滑块(Slider)组件来直观地调整每页的记录数。这些自定义实现可以增强用户的交互...
在Grid Panel中,我们通常会使用`Ext.data.Store`来存储和管理数据,并通过配置`pagingToolbar`来实现分页界面。 2. **Ext.data.Store与分页配置** `Ext.data.Store`是数据模型的容器,负责加载、存储和管理数据。...