ExtJS笔记---Grid实现后台分页

系统 1650 0
好记性不如烂笔头,现在每次碰见问题和觉得应该记录下来的东西都会保持写博客的习惯,今后再次碰见这种问题,就不用把时间浪费了。

这段时间用ExtJS用的多一点,前段时间碰见的分页问题,今天做个笔记吧。

为了简单明了,此project使用的是servlet的方式,如果你使用的是struts2或者spring MVC,则相应的改变成对于方式就可以了。

首先在页面引入ext所不要的文件,这个自然不必多说了吧,另外为了整个项目清晰明了,EXTJS代码也最好和JSP页面(当然了,你也有可能使用的模板,同理,这我就不必多说了)分开,那就新建一个app.js,在JSP页面中也需要引入进来.

PS(这里的JSON解析我使用了GSON,可以参考 https://code.google.com/p/google-gson/ )

下面是app.js的代码:

    Ext.onReady(function() {
	var pageSize = 5;
	var proxyData = new Ext.data.HttpProxy({url:'getJson'});
	var render = new Ext.data.JsonReader({root:'data',totalProperty: 'totalCount'},[{  
         name : 'id',  
         type : 'int'
     	},{  
         name : 'name',
         type: 'string' 
     	},{  
         name : 'borth',  
         type : 'date'
     	}]);
    var ds = new Ext.data.Store({
        proxy : proxyData,  
		reader : render
    });
    
    var cm = new Ext.grid.ColumnModel([
         new Ext.grid.RowNumberer(),
        { header: '序号', dataIndex: 'id',width:15 },
        { header: '姓名', dataIndex: 'name',width:30 },
        { header: '生日', dataIndex: 'borth',
        	width:55 ,
        	sortable: true,  
  			renderer: Ext.util.Format.dateRenderer('Y-m-d H:i:s') }
    ]);
    cm.defaultSortable = true;
    ds.load({params:{start:0,limit:pageSize}});
    
    var grid = new Ext.grid.GridPanel({
        loadMask : {msg:'正在加载数据,请稍等......'},
        store: ds,
        layout:'fit',
        cm: cm,
        height:300,
        renderTo:Ext.getBody(),
		title:'<center>人员信息</center>',
        viewConfig: {
            forceFit: true
        },
        bbar: new Ext.PagingToolbar({
            pageSize: pageSize,
            store: ds,
            displayInfo: true,
            displayMsg: '当前显示{0} - {1}条,共{2}条数据',
            emptyMsg: "没有记录"
        })
    });
});
  

这里要注意 ds.load({params:{start:0,limit:pageSize}});
里面两个参数大家应该都知道吧? 这就是我们分页所需要的数据了,
下面是servlet类,为了节约空间,只贴出doPost方法,详细源文件请下载底部的压缩包
    public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		int start = Integer.valueOf(request.getParameter("start"));
		int limit = Integer.valueOf(request.getParameter("limit"));

		String jsonStr = null;
		Map<String, Object> jsonObj = new HashMap<String, Object>();
		List<Person> persons = new ArrayList<Person>();
		int totalCount = 20;
		for (int i = 1; i <= totalCount; i++) {
			Person p = new Person(i, "路人" + i, new Date());
			persons.add(p);
		}
		persons = persons.subList(start, limit+start);
		jsonObj.put("data", persons);
		jsonObj.put("totalCount", totalCount);
		response.setContentType("application/x-json");
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();
		Gson gson = new Gson();
		jsonStr = gson.toJson(jsonObj);
		out.print(jsonStr);
		out.close();
	}
  

好了,有兴趣的同学下载压缩包导入Eclipse看吧。

ExtJS笔记---Grid实现后台分页


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论