`

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

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

这段时间用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看吧。
分享到:
评论
3 楼 xiaoyuyu0206 2014-01-24  
2 楼 lucky16 2012-07-20  
liqj2ee 写道
很显然你这个根本不是后台分页,你的limit也有歧异,你做了一次性读取一定的数据然后再分页。

这只是一个Demo,为了简单,没有写DAO,全部东西就在servlet里面就写出来了,你可以根据获取到的起始记录和最大记录自己写SQL啊
1 楼 liqj2ee 2012-07-12  
很显然你这个根本不是后台分页,你的limit也有歧异,你做了一次性读取一定的数据然后再分页。

相关推荐

    Extjs4.0学习笔记

    ExtJS4学习笔记(五)---Grid分页 ExtJS4学习笔记(六)---多表头Grid ExtJS4学习笔记(七)---带搜索的Grid(SearchGrid) ExtJS4学习笔记(八)---Grid多选/全选 ExtJS4学习笔记(九)---ExtJS4 EditGrid(可编辑的Grid) ...

    ExtJS4中文教程2 开发笔记 chm

    ExtJS4学习笔记(五)---Grid分页 ExtJS4学习笔记(八)---Grid多选 全选 ExtJS4学习笔记(六)---多表头Grid ExtJS4学习笔记(十)---ExtJS4图片验证码的实现 ExtJS4学习笔记(十一)---TabPanel ExtJS4学习笔记(十三)---上传...

    Extjs复习笔记(二十)-- tree和grid结合

    在"Extjs复习笔记(二十)-- tree和grid结合"这篇博文中,博主探讨了如何在EXTJS中实现树形视图(Tree)与网格视图(Grid)的融合。 Tree组件在EXTJS中通常用于显示具有层级关系的数据,例如文件系统、组织架构等。...

    Extjs复习笔记(十七)-- 给grid里面的内容分组

    本篇复习笔记将聚焦于EXTJS Grid中的一个重要特性——内容分组,帮助你深入理解如何实现这一功能。 内容分组在EXTJS Grid中允许你将数据按照特定字段进行分类,这样可以更清晰地组织和展示数据。这在处理大量数据时...

    extjs 学习笔记 四 带分页的grid

    因此,现在几乎所有的grid控件都会支持分页功能。extjs也不例外,它对分页也提供了强大而方便的支持,使得我们在分页处理上可以得心应手。 在extjs中,类Ext.PagingToolbar封装了关于分页的操作,该类从Toolbar继承...

    extjs 学习笔记(三) 最基本的grid

    在本篇学习笔记中,我们将深入探讨EXTJS中最基本的Grid的构建和配置。 首先,EXTJS的Grid由多个组件构成,其中最重要的是`ColumnModel`,它负责定义Grid中的列属性。在示例代码中,我们创建了一个`ColumnModel`对象...

    Extjs复习笔记(十五)-- JsonReader

    在“Extjs复习笔记(十五)-- JsonReader”这篇博文中,博主探讨了ExtJS中的JsonReader,这是数据绑定和JSON数据解析的关键部分。 JsonReader是ExtJS数据包(Ext.data)的一部分,用于从服务器获取JSON格式的数据,...

    JavaScript.-Extjs基础学习笔记

    根据给定的文件信息,我们可以深入探讨两个关键的Extjs组件——Tab Panel(标签页控件)和Grid(表格控件)。这两个控件是Extjs框架中非常实用且功能丰富的部分,广泛应用于Web应用程序的界面设计与交互逻辑构建。 ...

    extjs实例与学习资料

    所以自己学了一段时间,在专案才发现extjs的强大,无论对于开发者还是使用者他都是一场视觉盛宴,这里有我从学习开始做的一些笔记和例子也有自己收集的学习资料,里面包括分页,grid,tree,显示树信息的TreePanel、...

    EXTJS 学习笔片段1

    EXTJS 学习笔片段1 Form ComboBox 远程ComboBox 替代页面上已经存在的Select控件 Grid EditorGridPanel 使用本地store Toolbar工具菜单创建 分页工具栏创建 Window 弹出处理window窗口(模态窗口) ...

    十分有用有帮助的EXT学习笔记

    - **Grid组件**: Grid是EXT中的表格组件,可以用来展示大量数据,并支持排序、筛选、分页等功能。它通常与Store结合使用,动态加载数据。 - **Charts**: EXT提供了一套完整的图表组件,可以创建各种统计图表,如...

    ext 4.0 学习笔记.doc

    EXT 4.0 是一款流行的JavaScript库,专门用于构建富...EXT 4.0提供了丰富的API文档,允许开发者深入学习并自定义更多功能,如分页、筛选、编辑等。对于初学者来说,了解和实践这些基本概念是掌握EXT 4.0的第一步。

    Desktop.rar

    Grid插件则扩展了Grid的功能,如分页、排序、过滤等。 5. **收藏.txt**:“extjs模板的使用_收藏.txt”可能是一个用户的笔记或收藏,记录了在使用Ext JS模板过程中的一些重要点或技巧。 6. **文件夹**:"13199_...

Global site tag (gtag.js) - Google Analytics