1.表格添加分页条
分页store不能使用Ext.data.SimpleStore,因为分页需要调用load(),load()与Proxy有关,SimpleStore不但没有设置Proxy,而且也没有重写load()所有会出现错误
2.通过后台脚本获取分页数据
JSON里面除了name就是value,如果是数字不用加引号,如果加引号就是字符串,如果用[]包裹就是数组,如果出现{}就是嵌套的JSON
list.jsp
<%@ page language="java" pageEncoding="UTF-8"%> <% String start = request.getParameter("start"); String limit = request.getParameter("limit"); int index = 0;//Integer.parseInt(start); int pageSize = 4;//Integer.parseInt(limit); String name = "李文超"; String descn = "李文超的描述"; String sex = "17"; String json = "{totalProperty : 10,root:["; for(int i =index;i<pageSize+index;i++){ json+="{id:'"+i+"',name:'"+name+"',descn:'"+descn+"',sex:'"+sex+"'}"; if(i!=pageSize+index-1){ json+=","; } } json+="]}"; System.out.println(json); response.getWriter().write(json); %>index.jsp
<%@ page language="java" pageEncoding="UTF-8"%> <% String rootpath = request.getContextPath();%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" type="text/css" href="<%=rootpath%>/ext/resources/css/ext-all.css"/> <script type="text/javascript" src="<%=rootpath%>/ext/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="<%=rootpath%>/ext/ext-all.js"></script> <script type="text/javascript" src="<%=rootpath%>/ext/ext-all-debug.js"></script> <script type="text/javascript" src="<%=rootpath%>/ext/ext-lang-zh_CN.js"></script> <!-- 带进度条的分页需要加下面这个文件 --> <script type="text/javascript" src="<%=rootpath%>/ext/examples/ux/ProgressBarPager.js"></script> <script type="text/javascript" defer> Ext.onReady(function(){ Ext.BLANK_IMAGE_URL = '<%=rootpath%>/ext/resources/images/default/s.gif'; var start = 0; var limit = 3; var params = {start:start,limit:limit}; var record = Ext.data.Record.create([ {name : 'id'}, {name : 'name'}, {name : 'descn'}, {name : 'sex'} ]); var store = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url : 'list.jsp' }), reader : new Ext.data.JsonReader({ totalProperty : 'totalProperty', root : 'root', fields: record }) }); var sm = new Ext.grid.CheckboxSelectionModel({ singleSelect : true //true表示只可以选择单行 }); var cm = new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(),sm, {header:'编号',dataIndex:'id'}, {header:'名称',dataIndex:'name'}, {header:'描述',dataIndex:'descn'}, {header:'性别',dataIndex:'sex'} ]); var grid = new Ext.grid.GridPanel({ store : store, height : 20, cm : cm, sm : sm, bbar : new Ext.PagingToolbar({ pageSize : limit,//每页显示几条数据 store : store, displayInfo : true,//是否显示数据信息 displayMsg : '显示第{0}条到{1}条记录,一种{2}条',//displayInfo:true时才有效,{0},{1}会自动被替换成数据 emptyMsg : '没有数据',//没有数据时显示 //带进度条的分页工具条 plugins : new Ext.ux.ProgressBarPager() }), listeners : { 'beforerender' : function(){ store.load({params:params}); } } }); new Ext.Viewport({ layout:'fit', items: [grid] }); }); </script> </head> <body> </body> </html>
3.本地数组读取数据,并且实现内存分页
<%@ page language="java" pageEncoding="UTF-8"%> <% String rootpath = request.getContextPath();%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" type="text/css" href="<%=rootpath%>/ext/resources/css/ext-all.css"/> <script type="text/javascript" src="<%=rootpath%>/ext/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="<%=rootpath%>/ext/ext-all.js"></script> <script type="text/javascript" src="<%=rootpath%>/ext/ext-all-debug.js"></script> <script type="text/javascript" src="<%=rootpath%>/ext/ext-lang-zh_CN.js"></script> <script type="text/javascript" src="<%=rootpath%>/ext/PagingMemoryProxy.js"></script> <!-- 带进度条的分页需要加下面这个文件 --> <script type="text/javascript" src="<%=rootpath%>/ext/examples/ux/ProgressBarPager.js"></script> <script type="text/javascript" defer> Ext.onReady(function(){ Ext.BLANK_IMAGE_URL = '<%=rootpath%>/ext/resources/images/default/s.gif'; var limit = 2; var start = 0; var data = [ ['1','李文超','李文超的描述','male'], ['2','范勇','范勇的描述','female'], ['3','马新军','马新军的描述','male'], ['4','常高军','常高军的描述','female'], ['5','何卫国','何卫国的描述','male'] ]; var store = new Ext.data.Store({ proxy : new Ext.data.PagingMemoryProxy(data), reader : new Ext.data.ArrayReader({},[ {name : 'id',mapping:0}, {name : 'name',mapping:1}, {name : 'descn',mapping:2}, {name : 'sex',mapping:3}, ]) }); store.load({params:{start:start,limit:limit}}); var sm = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(),sm, {header:'编号',dataIndex:'id'}, {header:'名称',dataIndex:'name'}, {header:'描述',dataIndex:'descn'}, {header:'性别',dataIndex:'sex'} ]); var grid = new Ext.grid.GridPanel({ store : store, height : 20, cm : cm, sm : sm, bbar : new Ext.PagingToolbar({ pageSize : limit,//每页显示几条数据 store : store, displayInfo : true,//是否显示数据信息 //displayInfo:true时才有效,{0},{1}会自动被替换成数据 displayMsg : '显示第{0}条到{1}条记录,一种{2}条', emptyMsg : '没有数据',//没有数据时显示 //带进度条的分页工具条 plugins : new Ext.ux.ProgressBarPager() }) }); new Ext.Viewport({ layout:'fit', items: [grid] }); }); </script> </head> <body> </body> </html>