在项目中遇到Grid前端分页,本人也是刚接触extjs没多久,为了实现效果,一直找了很久才实现出来,对于代码中的一些也不能详细的说明出来,

不知道能不能帮助到遇到同样问题的朋友,所以将例子代码贴出来大家一起相互学习下。

在项目中时常会用到前端分页的效果,使用grid来进行分页,

在源代码中\examples\ux\data\PagingMemoryProxy.js,此时要使用该js文件,在项目引用该文件。

  1. <script type="text/javascript" src="ux/data/PagingMemoryProxy.js"></script>

分页的工具条是 Ext.toolbar.Paging类,xtype:pagingtoolbar,该工具绑定的store数据和grid绑定数据一样,

  1. dockedItems: [{
  2. xtype: 'pagingtoolbar',
  3. store: me.mystore,
  4. dock: 'bottom',
  5. cls: "smallPagingToolBar",
  6. inputItemWidth: 50,
  7. displayInfo: true,
  8. doRefresh: function () {
  9. me.refresh();
  10. }
    }

创建store数据时要注意proxy,本人在使用时不太理解该属性中的信息,只能按照复制粘贴,创建的store数据会根据指定的pageSize,进行自行分页

  1. me.mystore = Ext.create("Ext.data.Store", {
  2. fields: me.gridFilds,
  3. pageSize: 5, // 指定每页显示2条记录
  4. autoLoad: true,
  5. data: me.gridData, /*生成的数组数据*/
  6. proxy: {
  7. type: 'pagingmemory', /*引用的PagingMemoryProxy类*/
  8. reader: {
  9. type: 'json',
  10. totalProperty:'total'
  11. }
  12. }
  13. });

以下是完整代码:

  1. Ext.onReady(function(){
  2. // Ext.Msg.alert("提示","hello world!!!")
  3. Ext.define("MyGridPanel",{
  4. /*静态数据,可以从后台获取*/
  5. gridData:[
  6. {id:"1001",name:"wind",tel:"18603071234"},
  7. {id:"1002",name:"小月",tel:"18603073578"},
  8. {id:"1003",name:"冷清雪",tel:"18603073569"},
  9. {id:"1004",name:"布隆",tel:"18603073214"},
  10. {id:"1005",name:"莫甘娜",tel:"18603072568"},
  11. {id:"1006",name:"阿里",tel:"18603073247"},
  12. {id:"1001",name:"阿卡丽",tel:"18603071563"},
  13. {id:"1001",name:"卡特",tel:"18603074758"},
  14. {id:"1001",name:"死歌",tel:"18603072354"},
  15. ], //保存数据
  16.  
  17. totalCount:0, //数据总条数
  18. pageSize:5, //每页显示的条数
  19. mystore:null, // 创建的store数据对象
  20. myGridPanel: null , //GridPanel对象
  21. gridFilds:[], //数据列模型
  22.  
  23. /* 构建一个GridPanel组件 */
  24. CreateGridPanel:function(){
  25. /* 创建列数据 */
  26. var gridColumn = [{
  27. header: "用户ID",
  28. dataIndex: "id",
  29. width:100,
  30. hideable: false,
  31. sortable: true,
  32. draggable: false,
  33. }, {
  34. header: "用户名",
  35. width: 180,
  36. dataIndex: "name",
  37. hideable: false,
  38. sortable: true,
  39. draggable: false,
  40. }, {
  41. header: "手机号",
  42. flex:1,
  43. dataIndex: "tel",
  44. }];
  45.  
  46. var me = this;
  47. for (var i = 0; i < gridColumn.length; i++) {
  48. me.gridFilds.push(gridColumn[i].dataIndex);
  49. }
  50.  
  51. /* 构建一个store数据 */
  52. me.totalCount = me.gridData.length;
  53. me.mystore = Ext.create("Ext.data.Store", {
  54. fields: me.gridFilds,
  55. pageSize: me.pageSize, // 指定每页显示2条记录
  56. autoLoad: true,
  57. data: me.gridData,
  58. proxy: {
  59. type: 'pagingmemory',
  60. reader: {
  61. type: 'json',
  62. totalProperty:'total'
  63. }
  64. }
  65. });
  66.  
  67. var picker = Ext.create("Ext.grid.Panel", {
  68. store: me.mystore,
  69. columns: gridColumn,
  70. layout:"fit",
  71. height:350,
  72. enableColumnHide: false,
  73. sortableColumns: false,
  74. autoScroll: true,
  75. columnLines: true,
  76. noDefaultSelect: true, //不默认选择第一行
  77. viewConfig:{
  78. stripeRows:true,//在表格中显示斑马线
  79. },
  80. dockedItems: [{
  81. xtype: 'pagingtoolbar',
  82. store: me.mystore,
  83. dock: 'bottom',
  84. cls: "smallPagingToolBar",
  85. inputItemWidth: 50,
  86. displayInfo: true,
  87. doRefresh: function () {
  88. me.refresh();
  89. }
  90. }, {
  91. xtype: "toolbar",
  92. dock: "top",
  93. height: 40,
  94. style: "padding-bottom:0;border-bottom:1px solid #ddd !important",
  95. items: [{
  96. xtype: 'textfield',
  97. name: 'fastKey',
  98. fieldLabel: '查找',
  99. labelWidth: 40,
  100. labelAlign: "right",
  101. emptyText: "没有查询到数据", // 分页没有数据时,分页右侧显示的内容
  102. width: 230,
  103. listeners: {
  104. change: function (a) {
  105. /*过滤查询*/
  106. me.filterData();
  107. }
  108. }
  109. }, {
  110. xtype: "displayfield",
  111. value: "可选择信息("
  112. }, {
  113. xtype: 'label',
  114. style: "color:red",
  115. text: me.totalCount,
  116. name: "totalCount"
  117. }, {
  118. xtype: "displayfield",
  119. value: ")条"
  120. }, "->"]
  121. }]
  122. });
  123.  
  124. return picker;
  125. },
  126.  
  127. refresh:function(){
  128. //清空筛选输入框的数据,
  129. var fastKey = this.myGridPanel.query("[name='fastKey']")[0];
  130. fastKey.setValue("");
  131. /*重新加载数据*/
  132. this.filterData();
  133. },
  134.  
  135. /*筛选数据*/
  136. filterData: function () {
  137. var me = this;
  138. var fastKey = me.myGridPanel.query("[name='fastKey']")[0];
  139. var searchValue = fastKey.getValue().toString().toLowerCase(),
  140. newData = []; //newData保存筛选出来的数据
  141. if (searchValue == "") {
  142. newData = me.gridData;
  143. } else {
  144. for (var i = 0, len = me.gridData.length; i < len; i++) {
  145. for (var j = 1, jlen = me.gridFilds.length; j < jlen; j++) {
  146. if (me.gridData[i][me.gridFilds[j]] && me.gridData[i][me.gridFilds[j]].toString().toLowerCase().indexOf(searchValue) >= 0) {
  147. newData.push(me.gridData[i]);
  148. break;
  149. }
  150. }
  151. }
  152. }
  153. /*重新加载数据*/
  154. me.myGridPanel.store.loadData(newData);
  155. me.myGridPanel.store.getProxy().data = newData; //更新在缓存的数据
  156. me.myGridPanel.store.loadPage(1); //重新刷新
  157. me.myGridPanel.query("[name='totalCount']")[0].setText(newData.length);
  158. },
  159.  
  160. /*创建窗体*/
  161. CreateWindow:function(){
  162. /*构建gridpanel组件*/
  163. var me = this;
  164. me.myGridPanel = me.CreateGridPanel();
  165. var win = Ext.create("Ext.window.Window",{
  166. title:"Grid前端分页",
  167. width:500,
  168. height:400,
  169. id:"MyWindow",
  170. renderTo:Ext.getBody(),
  171. items:me.myGridPanel
  172. });
  173. win.show();
  174. }
  175. });
  176. var mygridpanel = Ext.create("MyGridPanel");
  177. mygridpanel.CreateWindow();
  178.  
  179. });

效果图:

    

Extjs中grid前端分页使用PagingMemoryProxy【二】的更多相关文章

  1. EXTJS中grid的数据特殊显示,不同窗口的数据传递

    //EXTJS中grid的数据特殊显示renderer : function(value, metaData, record, rowIndex, colIndex, store, view) { v ...

  2. 基于vue2.0实现仿百度前端分页效果(二)

    前言 上篇文章中,已经使用vue实现前端分页效果,这篇文章我们单独将分页抽离出来实现一个分页组件 先看实现效果图 代码实现 按照惯例,我们在冻手实现的时候还是先想一想vue实现组件的思路 1.需要提前 ...

  3. Extjs中grid 的ColumnModel 属性配置

    一, 用数组的方式配置ColumnModel var colModel = new Ext.grid.ColumnModel([ { header:'编号', dataIndex:'id',width ...

  4. 64. Extjs中grid 的ColumnModel 属性配置

    转自:https://blog.csdn.net/u011530389/article/details/45821945 本文导读:Ext.grid.ColumnModel 该类用于定义表格的列模型, ...

  5. Extjs中grid行的上移和下移

    一.将up和down按钮放到tbar中,然后选中grid行即可实现上移和下移 var up = new Ext.Action({ text : 'Up', icon : 'up.png',//或者添加 ...

  6. Extjs中grid表格中去掉红三角

    在编辑Extjs的gridpanel的时候,数据有错误或是修改在每个单元格上都会出现红色的小三角,在每个列上面可以配置allowBlank: false来标识这个不可以为空 有的时候在保存数据时如果不 ...

  7. NSS_07 extjs中grid在工具条上的查询

    碰到的每个问题, 我都会记下走过的弯路,尽量回忆白天的开发过程, 尽量完整, 以使自己以后可以避开这些弯路. 这个问题在系统中应用得比较多, 在一个gridpanel的工具条上有俩搜索框, panel ...

  8. NSS_04 extjs中grid接收datetime类型参数列

    今天在做用户列表时发现, asp.net mvc3的控制器在返回JsonResult结果时, 会把对象内的DateTime类型成员,解析为类似于\/Date(1238606590509)\/的格式 , ...

  9. extjs中grid中行内文本或图片居中显示

    我是看了网上写的方法调试自己的代码来实现的,实现的方式是当加载store数据时改变grid的行样式,源码如下: html代码: <div id="weatherP_grid-body& ...

随机推荐

  1. MySQL服务器的线程数查看方法

    mysql重启命令:/etc/init.d/mysql restart MySQL服务器的线程数需要在一个合理的范围之内,这样才能保证MySQL服务器健康平稳地运行.Threads_created表示 ...

  2. Google Analytics之增强型电子商务报告

    虽然Google Analytics很多年以前就提供了电子商务报告的功能,但对于电子商务网站来说,这个报告缺失的东西还太多.而Google Analytics即将推出的增强型电子商务报告有望弥补这一短 ...

  3. Servlet中进行context属性的同步

    Servlet中进行context属性的同步: 必须所有使用context的servlet都进行synchronized才可以实现同步: servlet: package com.stono.serv ...

  4. 修改/home内子目录的名字

    每次装Linux系统我都会直接安装英文版,虽然中文版方便使用,但是在终端里面会有诸多不便,例如/home目录里面那些子文件夹就是一个很大的麻烦了,不过如果你安装了中文版的系统,还是有办法改成英文的. ...

  5. S2SH框架整合(注解)Struts2+Spring+Hibernate+MySql

    整合简介 Struts2+Spring4+hibernate4整合,Maven管理jar包,Eclipse工具.注解方式 架构截图   1.Spring整合Hibernate 1.1.创建Hibern ...

  6. canvas小程序-快跑程序员

    canvas不用说html5带来的好东西,游戏什么的,么么哒 记得有一天玩手机游戏,就是一个跳跃过柱子那种,其实元素很简单啊,app能开发,借助html5 canvas也可以啊, 于是就开始了. -- ...

  7. MongoDB的账户与权限管理及在Python与Java中的登陆

    本文主要介绍了MongoDB的账户新建,权限管理(简单的),以及在Python,Java和默认客户端中的登陆. 默认的MongoDB是没有账户权限管理的,也就是说,不需要密码即可登陆,即可拥有读写的权 ...

  8. 在点击div中的p时,如何阻止事件冒泡?

    今天整理笔记,发现在学习javaScript的过程中,遇到过一个在当时看来很棘手的问题,现在特地总结一下,也希望能帮助到曾像我一样迷惘的初学者. 我还是以一个案例来说明问题,html代码如下: < ...

  9. 学习计划(一)——JavaScript

    一:与前端之缘 大一时除了上课和社团外不知道要学点什么,但是又不想睡觉打游戏,常常就是啥都想学,photoshop,premiere,After Effects都学,但始终没有明确的目标. 大二时一直 ...

  10. PHP接入芝麻信用续。

    前面,做好了,PHP查询芝麻信用. 客户又要求说,芝麻官方,发来邮件,还需要提交网站的数据给芝麻, 就是说接入芝麻SDK,还有一步,就是数据反馈. 大概芝麻分就是根据这些反馈的数据来计算的吧. 不多说 ...