zoukankan      html  css  js  c++  java
  • Extjs的GridPanel分页前后台完整代码实例

    第一次写文章啊,有些冲动。最近在公司学习Extjs,做了一个分页的小实例和大家分享。

    1.首先编写paging-grid.js文件,这是我在网上参考的例子改写的,大同小异。

    Ext.onReady(function() {
    	// Proxy
    	var proxy = new Ext.data.HttpProxy({
    		url : "../../servlet/LoginServlet"
    	});
    	// Record 定义记录结果
    	var Human = Ext.data.Record.create([ {
    		name : "hid",
    		type : "int",
    		mapping : "hid"
    	}, {
    		name : "name",
    		type : "string",
    		mapping : "name"
    	}, {
    		name : "sex",
    		type : "string",
    		mapping : "sex"
    	}, {
    		name : "birthday",
    		type : "string",
    		mapping : "birthday"
    	}, {
    		name : "education",
    		type : "string",
    		mapping : "education"
    	}, {
    		name : "memo",
    		type : "string",
    		mapping : "memo"
    	} ]);
    	// Reader
    	var reader = new Ext.data.JsonReader({
    		totalProperty : "totalProperty",
    		root : "root"
    	}, Human);
    	// Store
    	var store = new Ext.data.Store({
    		proxy : proxy,
    		reader : reader
    	});
    	store.load({
    		params : {
    			start : 0,
    			limit : 2
    		}
    	});
    	// 列模型
    	var cm = new Ext.grid.ColumnModel([ {
    		header : "ID",
    		width : 40,
    		dataIndex : "hid"
    	}, {
    		header : "姓名",
    		width : 80,
    		dataIndex : "name",
    		tooltip : "这是您的姓名"
    	}, {
    		header : "性别",
    		width : 40,
    		dataIndex : "sex",
    		align : "center"
    	}, {
    		header : "生日",
    		width : 150,
    		format : "Y-m-d",
    		dataIndex : "birthday"
    	}, {
    		header : "学历",
    		width : 80,
    		dataIndex : "education",
    		align : "center"
    	}, {
    		id : "memo",
    		header : "备注",
    		dataIndex : "memo"
    	} ]);
    	var grid = new Ext.grid.GridPanel({
    		title : "中国公民",
    		width : 650,
    		autoHeight : true,
    		cm : cm,
    		store : store,
    		renderTo : "paging-grid",
    		autoExpandColumn : "memo", // 自动伸展,占满剩余区域
    		bbar : new Ext.PagingToolbar({
    			store : store,
    			pageSize : 2,
    			displayInfo : true,
    			displayMsg : "本页显示第{0}条到第{1}条的记录,一共{2}条",
    			emptyMsg : "没有记录"
    		})
    	});
    });
    2.编写paging-grid.html,注意一定要引入必要的ext文件如ext-all.js等,具体看如下代码:
    <pre name="code" class="html"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Array Grid Example</title>
    
        <link rel="stylesheet" type="text/css" href="../../ext/resources/css/ext-all.css" />
    
     	<script type="text/javascript" src="../../ext/ext-base.js"></script>
    
        <script type="text/javascript" src="../../ext/ext-all.js"></script>
    
        <script type="text/javascript" src="paging-grid.js"></script>
        <link rel="stylesheet" type="text/css" href="../../ext/resources/css/grid-examples.css" />
    
        <link rel="stylesheet" type="text/css" href="../../resources/css/examples.css" />
    </head>
    <body>
    <script type="text/javascript" src="../../ext/examples.js"></script><!-- EXAMPLES -->
    <div id="paging-grid"></div>
    </body>
    </html>
    3.创建People.java类
    <pre name="code" class="java">package com.forlink.yangm.entity;
    
    public class People {
    	
    	private int hid;
    	private String name;
    	private String sex;
    	private String birthday;
    	private String education;
    	private String memo;
    	public People() {
    		// TODO Auto-generated constructor stub
    	}
    	public People(int hid, String name, String sex, String birthday,
    			String education, String memo) {
    		this.hid = hid;
    		this.name = name;
    		this.sex = sex;
    		this.birthday = birthday;
    		this.education = education;
    		this.memo = memo;
    	}
    	public int getHid() {
    		return hid;
    	}
    	public void setHid(int hid) {
    		this.hid = hid;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	public String getBirthday() {
    		return birthday;
    	}
    	public void setBirthday(String birthday) {
    		this.birthday = birthday;
    	}
    	public String getEducation() {
    		return education;
    	}
    	public void setEducation(String education) {
    		this.education = education;
    	}
    	public String getMemo() {
    		return memo;
    	}
    	public void setMemo(String memo) {
    		this.memo = memo;
    	}
    	
    }
    


    
    
    
    4.创建LoginServlet,注意一定要在web.xml中配置好Servlet,相信你可以的,不用我详述了。其中要特别小心Ext对于json格式的要求,标准的格式如下:
    {"totalProperty":3,"root":[{"hid":1,"name":"yangm1","sex":"男","birthday":"1994-06-17","education":"hhhh1","memo":"aaa"},
    {"hid":2,"name":"yangm2","sex":"男","birthday":"1994-06-17","education":"hhhh1","memo":"aaa"},
    {"hid":3,"name":"yangm3","sex":"男","birthday":"1994-06-17","education":"hhhh1","memo":"aaa"}]}
    如果你的数据在前台不能显示,那多半是你的json格式有问题,请好好检查。推荐一下阿里巴巴的fastjson工具包,可以帮助你进行格式转化。
    package com.forlink.yangm.action;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.junit.Test;
    
    import com.alibaba.fastjson.JSON;
    import com.forlink.yangm.entity.People;
    
    public class LoginServlet extends HttpServlet {
    
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    
    	@Override
    	// TODO Auto-generated method stub
    	protected void doGet(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
    		response.setContentType("text/html;charset=utf-8");
    		
    		//start:当数据序号,从0开始
    		//容易和easyUI的page混淆
    		int start = Integer.parseInt(request.getParameter("start"));
    		//limit:页面大小
    		int limit = Integer.parseInt(request.getParameter("limit"));
    		System.out.println("当前页:"+start+",页面大小:"+limit);
    		PrintWriter out = response.getWriter();
    		//StringBuilder json = new StringBuilder("{totalProperty:1,root:[");
    		String json = getJson(start,limit);
    		out.println(json);
    //		out.flush();
    //		out.close();
    	}
    	@Test
    	public String getJson(int start, int limit) {
    		List<People> all = new ArrayList<People>();
    		all.add(new People(1, "yangm1", "难", "1994-06-1", "high", "memo"));
    		all.add(new People(2, "yangm2", "难", "1994-06-2", "high", "memo"));
    		all.add(new People(3, "yangm3", "难", "1994-06-3", "high", "memo"));
    		all.add(new People(4, "yangm4", "难", "1994-06-4", "high", "memo"));
    		all.add(new People(5, "yangm5", "难", "1994-06-5", "high", "memo"));
    		all.add(new People(6, "yangm6", "难", "1994-06-6", "high", "memo"));
    		//截取当前页面大小的数据
    		List<People> sublist = all.subList(start, start+limit);
    		
    		
    		//totalProperty:一定要是你的grid需要展示的数据总量,在这里为6条
    		StringBuilder json = new StringBuilder("{"totalProperty":");
    		//root:需要展示的数据json格式,fastjson转化数据为要求的json格式
    		json.append(all.size()).append(","root":");
    		json.append(JSON.toJSONString(sublist))	;	
    		json.append("}");
    		System.out.println(json);
    		return json.toString();
    	}
    	
    	@Override
    	protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		this.doGet(request, response);
    	}
    }
    
    以上所述绝壁是一个完整的例子,直接可以运行的。我个人是比较喜欢无脑的跟着大婶一步步做的,然后再探究其中奥秘,首先必须要有成就感,我才能往下继续啊,都看不到结果,你跟我说个毛啊!注释很详细,相信大家都能看懂吧。来个截图吧还是。
    如果你觉得确实帮到你了,请不要吝啬你的赞,俺们需要你的鼓励啊!如果你觉得写的不错,转载是麻烦表明出处,毕竟写篇文章不容易啊客官!



  • 相关阅读:
    sqlite遇到database is locked问题的完美解决
    Delphi使程序的窗口出现在最前面并激活
    win10 家庭版不支持gpedit.msc的解决办法
    Delphi Record To Stream
    SQL Server 查看CPU情况
    JavaScript 获取 Url 上的参数(QueryString)值
    关于EF分页查询报错(Count must have a non-negative value.)的解决方案
    调用微信退款接口时出现System.Security.Cryptography.CryptographicException: 出现了内部错误 解决办法
    Javascript中“==”与“===”的区别
    IE浏览器各版本的CSS Hack
  • 原文地址:https://www.cnblogs.com/yangmang/p/6275581.html
Copyright © 2011-2022 走看看