- 浏览: 137944 次
- 性别:
- 来自: 青岛
文章分类
最新评论
-
chris7w:
ExtJS 3.3.1/*用以下CSS使GRID显示竖线*/. ...
让 Ext GridPanel 单元格显示竖线 -
hyj1254:
收下了,有難う
Java各类在线API -
alfredgao:
theone0358 写道
来灌水了
不要来灌水,给送点东 ...
Oracle中的Varchar2与Varchar的区别 -
theone0358:
来灌水了
Oracle中的Varchar2与Varchar的区别 -
mikewang:
java:comp/env/jdbc/datasource 与 ...
JNDI中 java:comp/env/jdbc/datasource 与 jdbc/datasou
转载自http://ext.group.iteye.com/group/blog/201891
看了robbin 关于hibernate 分页的老帖(http://www.iteye.com/topic/261),把ext grid 的数据库分页整了下,完全满足需要,呵呵,贴出代码与大家共同学习下:
DAO代码:
服务层:
action 代码:
开始无数据时怎么也不能显示PagingToolbar 的emptyMsg,后来发现空数据时组织格式错误,忘记去掉 [{"rows":[],"results":"0"}]这部分的“[]”,这个小问题折磨了俺好久,呵呵,要细心啊~!
JS代码:
搞定,收工....
DAO代码:
- /**
- * 获取符合查询条件的记录总数
- * @param detachedCriteria hibernate Criteria 查询对象,由service组装
- * @return
- */
- public Long getRecordCount(final DetachedCriteria detachedCriteria) {
- return (Long) getHibernateTemplate().execute(new HibernateCallback() {
- public Object doInHibernate(Session session)
- throws HibernateException {
- Criteria criteria = detachedCriteria
- .getExecutableCriteria(session);
- long count = Long.parseLong((criteria.setProjection(Projections
- .rowCount()).uniqueResult()).toString());
- criteria.setProjection(null);
- return Long.valueOf("" + count);
- }
- }, true);
- }
- /**
- * 获取符合条件的查询记录
- * @param detachedCriteria
- * @param startResult
- * @param limitResult
- * @return
- */
- public List listByConditions(final DetachedCriteria detachedCriteria,
- final int startResult, final int limitResult) {
- return (List) getHibernateTemplate().execute(new HibernateCallback() {
- public Object doInHibernate(Session session)
- throws HibernateException {
- Criteria criteria = detachedCriteria
- .getExecutableCriteria(session);
- criteria.setFirstResult(startResult);
- criteria.setMaxResults(limitResult);
- return criteria.list();
- }
- }, true);
- }
/** * 获取符合查询条件的记录总数 * @param detachedCriteria hibernate Criteria 查询对象,由service组装 * @return */ public Long getRecordCount(final DetachedCriteria detachedCriteria) { return (Long) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Criteria criteria = detachedCriteria .getExecutableCriteria(session); long count = Long.parseLong((criteria.setProjection(Projections .rowCount()).uniqueResult()).toString()); criteria.setProjection(null); return Long.valueOf("" + count); } }, true); } /** * 获取符合条件的查询记录 * @param detachedCriteria * @param startResult * @param limitResult * @return */ public List listByConditions(final DetachedCriteria detachedCriteria, final int startResult, final int limitResult) { return (List) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Criteria criteria = detachedCriteria .getExecutableCriteria(session); criteria.setFirstResult(startResult); criteria.setMaxResults(limitResult); return criteria.list(); } }, true); }
服务层:
- /**
- * 获取所有日志列表
- * @param startResult 查询记录起点
- * @param limitResult 简要列表每页最大记录数
- * @param sortRecord 简要列表排序字段名
- * @param dirRecord 简要列表排序类型 DESE/ASC
- * @return
- */
- public JSONArray getAllLogs(String startResult,String limitResult,
- String sortRecord,String dirRecord) {
- try {
- DetachedCriteria detachedCriteria = DetachedCriteria.forClass(TDeasLog.class);
- if(dirRecord.equals("ASC"))
- detachedCriteria.addOrder(Order.asc(sortRecord));
- else
- detachedCriteria.addOrder(Order.desc(sortRecord));
- Long count = logDAO.getRecordCount(detachedCriteria);//获取符合条件的记录总数
- List list = logDAO.listByConditions(detachedCriteria, Integer.parseInt(startResult),
- Integer.parseInt(limitResult));//获取符合条件记录
- if(list.size()>0){
- List jsonlist = new ArrayList();
- Iterator it = list.iterator();
- while (it.hasNext()){
- Log log = (Log )it.next();
- Map map = new HashMap();
- map.put("taskId", log .getTaskId());
- map.put("rwfssj", log .getRwfssj());
- map.put("rwjssj", log .getRwjssj());
- ....
- jsonlist.add(map);
- }
- Map m = new HashMap();
- m.put("results", count.toString());
- m.put("rows", jsonlist);
- JSONArray jsonArray = JSONArray.fromObject(m);
- return jsonArray;
- }else
- return null;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
/** * 获取所有日志列表 * @param startResult 查询记录起点 * @param limitResult 简要列表每页最大记录数 * @param sortRecord 简要列表排序字段名 * @param dirRecord 简要列表排序类型 DESE/ASC * @return */ public JSONArray getAllLogs(String startResult,String limitResult, String sortRecord,String dirRecord) { try { DetachedCriteria detachedCriteria = DetachedCriteria.forClass(TDeasLog.class); if(dirRecord.equals("ASC")) detachedCriteria.addOrder(Order.asc(sortRecord)); else detachedCriteria.addOrder(Order.desc(sortRecord)); Long count = logDAO.getRecordCount(detachedCriteria);//获取符合条件的记录总数 List list = logDAO.listByConditions(detachedCriteria, Integer.parseInt(startResult), Integer.parseInt(limitResult));//获取符合条件记录 if(list.size()>0){ List jsonlist = new ArrayList(); Iterator it = list.iterator(); while (it.hasNext()){ Log log = (Log )it.next(); Map map = new HashMap(); map.put("taskId", log .getTaskId()); map.put("rwfssj", log .getRwfssj()); map.put("rwjssj", log .getRwjssj()); .... jsonlist.add(map); } Map m = new HashMap(); m.put("results", count.toString()); m.put("rows", jsonlist); JSONArray jsonArray = JSONArray.fromObject(m); return jsonArray; }else return null; } catch (Exception e) { e.printStackTrace(); return null; } }
action 代码:
- public ActionForward getAllLogs(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response) {
- String startResult = request.getParameter("start");
- String limitResult = request.getParameter("limit");
- String sortRecord = request.getParameter("sort");
- String dirRecord = request.getParameter("dir");
- JSONArray jsonArray = this.getLogService().getAllLogs(startResult,limitResult,sortRecord,dirRecord);
- if(jsonArray != null){
- String jsonstr = jsonArray.toString();
- //去除JSON对象前的[]
- String json = jsonstr.substring(1, jsonstr.length()-1);
- response.setContentType("text/json; charset=utf-8");
- try {
- response.getWriter().print(json);
- } catch (IOException e) {
- log.error("获取日志实例列表失败,异常:"+e.getMessage());
- }
- }else{//返回空数据,格式:{"rows":[],"results":"0"}
- List list = new ArrayList();
- Map map1 = new HashMap();
- list.add(map1);
- Map m = new HashMap();
- m.put("results", "0");
- m.put("rows", list);
- JSONArray json = JSONArray.fromObject(m);
- String jsonString = json.toString();
- String jsonstr =jsonString.substring(1, jsonString.length()-1);
- response.setContentType("text/json; charset=utf-8");
- try {
- response.getWriter().print(jsonstr);
- } catch (IOException e) {
- log.error("获取日志实例列表失败,异常:"+e.getMessage());
- }
- }
- return null;
- }
public ActionForward getAllLogs(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String startResult = request.getParameter("start"); String limitResult = request.getParameter("limit"); String sortRecord = request.getParameter("sort"); String dirRecord = request.getParameter("dir"); JSONArray jsonArray = this.getLogService().getAllLogs(startResult,limitResult,sortRecord,dirRecord); if(jsonArray != null){ String jsonstr = jsonArray.toString(); //去除JSON对象前的[] String json = jsonstr.substring(1, jsonstr.length()-1); response.setContentType("text/json; charset=utf-8"); try { response.getWriter().print(json); } catch (IOException e) { log.error("获取日志实例列表失败,异常:"+e.getMessage()); } }else{//返回空数据,格式:{"rows":[],"results":"0"} List list = new ArrayList(); Map map1 = new HashMap(); list.add(map1); Map m = new HashMap(); m.put("results", "0"); m.put("rows", list); JSONArray json = JSONArray.fromObject(m); String jsonString = json.toString(); String jsonstr =jsonString.substring(1, jsonString.length()-1); response.setContentType("text/json; charset=utf-8"); try { response.getWriter().print(jsonstr); } catch (IOException e) { log.error("获取日志实例列表失败,异常:"+e.getMessage()); } } return null; }
开始无数据时怎么也不能显示PagingToolbar 的emptyMsg,后来发现空数据时组织格式错误,忘记去掉 [{"rows":[],"results":"0"}]这部分的“[]”,这个小问题折磨了俺好久,呵呵,要细心啊~!
JS代码:
- var datastore = new Ext.data.Store({
- proxy: new Ext.data.HttpProxy({
- url: 'logManage.do?method=getAllLogs'
- }),
- reader: new Ext.data.JsonReader({
- root : 'rows',
- totalProperty : 'results',
- id: 'taskID'
- }, [
- {name: 'taskId'},
- {name: 'rwfssj'},
- {name: 'rwjssj'},
- ....
- ]),
- remoteSort: true
- });
- datastore.setDefaultSort('taskId','ASC');
- datastore.load({params:{start:0, limit:10}});
- var sm = new Ext.grid.CheckboxSelectionModel();
- var colModel = new Ext.grid.ColumnModel([
- new Ext.grid.RowNumberer(),
- { header:'任务ID', width:100, sortable:true, locked:true, dataIndex:'taskId'},
- { header:'任务类型', width:100, sortable:true, locked:false, dataIndex:'rwlb'},
- { header:'任务状态', width:100, sortable:true, locked:false, dataIndex:'rwzt'},
- ......
- ]);
- var LogGrid = new Ext.grid.GridPanel({
- ds : datastore,
- cm : colModel,
- sm : sm,
- id : 'LogGrid',
- title : '日志列表',
- autoHeight : true,
- width : '100%',
- loadMask : true,
- buttons : [{
- text : '查询',
- tooltip : '日志查询',
- handler : logSearch
- },{
- text : '关闭',
- tooltip : '关闭窗口',
- handler : closeForm
- }],
- buttonAlign : 'right',
- bbar : new Ext.PagingToolbar({
- id : 'pagingbar',
- pageSize : 10,
- store : datastore,
- displayInfo : true
- })
- });
var datastore = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'logManage.do?method=getAllLogs' }), reader: new Ext.data.JsonReader({ root : 'rows', totalProperty : 'results', id: 'taskID' }, [ {name: 'taskId'}, {name: 'rwfssj'}, {name: 'rwjssj'}, .... ]), remoteSort: true }); datastore.setDefaultSort('taskId','ASC'); datastore.load({params:{start:0, limit:10}}); var sm = new Ext.grid.CheckboxSelectionModel(); var colModel = new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(), { header:'任务ID', width:100, sortable:true, locked:true, dataIndex:'taskId'}, { header:'任务类型', width:100, sortable:true, locked:false, dataIndex:'rwlb'}, { header:'任务状态', width:100, sortable:true, locked:false, dataIndex:'rwzt'}, ...... ]); var LogGrid = new Ext.grid.GridPanel({ ds : datastore, cm : colModel, sm : sm, id : 'LogGrid', title : '日志列表', autoHeight : true, width : '100%', loadMask : true, buttons : [{ text : '查询', tooltip : '日志查询', handler : logSearch },{ text : '关闭', tooltip : '关闭窗口', handler : closeForm }], buttonAlign : 'right', bbar : new Ext.PagingToolbar({ id : 'pagingbar', pageSize : 10, store : datastore, displayInfo : true }) });
搞定,收工....
发表评论
-
Ext JS与企业软件界面设计
2008-08-29 09:52 2902转载自http://hoou02.blog.163.com/b ... -
让 Ext GridPanel 单元格显示竖线
2008-08-29 09:08 3820转载自http://www.monkey6.cn/?p=36 ... -
Ext2 学习小结
2008-08-28 16:04 960转载自http://www.ajaxbbs.net/Ext2- ... -
Ext2常用功能描述
2008-08-28 15:58 1035Ext功能描述 最后更新:2007-12-12 Yemoo 1 ... -
Ext2:使用xml构建Ext menu菜单
2008-08-28 15:52 1374var menuObj=[{ text:" ... -
基于Ext实现的信息提示组件
2008-08-28 15:42 2817这个组件其实很简单,以前有纯js写过,不过当时做的比较简单,只 ... -
采用样式解决Ext.Grid单元格长度显示过长问题
2008-08-28 15:27 3811最简单的办法莫过于直接修改ext-all.css,为了不侵入e ... -
Ext2.0框架的Grid使用介绍
2008-08-28 14:34 1243Ext2.0框架的Grid使用介绍 最近空闲时间在学习Ext2 ... -
ext-grid常见问题 FAQ: Grid
2008-08-28 14:22 3223转自(http://www.extjs.com/forum/s ... -
Ext常用问题的总结(转载自http://ext.group.javaeye.com/group/)
2008-08-28 10:50 1442scripts/ext/resources/css/ext-a ... -
使用Ext的Grid,Form,Dialog来实现分页列表,CRUD
2008-08-28 09:38 1716简介:这篇文章将告诉你如何使用Ext中的Grid,Form,D ... -
ExtJS-入门(转载自http://www.blogjava.net/puras/archive)
2008-08-28 09:32 871作者:赫连紫軒(Puras) 参考:http://extjs ...
相关推荐
总结来说,"ext grid json分页显示"是通过EXT.js的Grid组件结合DWR的Ajax能力,实现前端数据的分页加载和显示。这种方式既提高了用户界面的响应速度,又有效管理了大数据量的显示,是现代Web应用中常用的数据展示...
在本文中,我们将深入探讨如何在EXT Grid中实现服务器端分页,这在处理大量数据时尤为关键。EXT Grid是一款强大的JavaScript组件,用于构建交互式的数据视图,而服务器端分页则是优化性能、提高用户体验的重要策略。...
在本文中,我们将深入探讨如何使用Ext JS 2.0框架中的Grid组件实现分页功能,结合PHP后端进行数据处理。Grid组件是Ext JS中一个强大的数据展示工具,能够以表格形式展示大量数据,而分页则是处理大数据集时不可或缺...
在与后端数据库交互时,`Ext Grid`通常结合`Ajax`或者`Store`来实现数据的动态加载。 1. **配置`Ext Store`**:在`Ext`中,`Store`是用于存储和管理数据的容器。我们需要创建一个`Store`实例,配置数据源(如:`...
在本文中,我们将深入探讨如何使用Ext Grid与Direct Web Remoting (DWR)技术结合,实现一个具有分页功能的列表展示。首先,让我们逐一了解这些关键组件。 1. **Ext Grid**: Ext Grid是Ext JS库中的核心组件,用于...
总结来说,本示例通过Ext JS的Grid组件实现了前端的分页展示,同时利用Servlet在后台处理数据分页逻辑,两者配合实现了完整的前后端分页功能。这种分页方式在实际项目中非常常见,有效提高了用户体验,减轻了服务器...
在这个例子中,开发者通过编写自定义代码,实现了从数据库动态读取数据并显示在Grid和Tree中,同时支持分页功能,极大地提高了用户体验。 1. **EXT Grid**: EXT Grid是EXT JS中的核心组件之一,用于展示大量数据。...
通过`Ext.grid.Panel`的`plugins`属性启用分页插件`Ext.grid.plugin.PagingToolbar`,并与`store`的`proxy`配置相结合,可以实现按需从服务器请求数据。`proxy`中的`type`设置为`ajax`或`rest`,并配置`api`属性来...
10. **EXT Grid与数据库**: EXT Grid是展示大量数据的利器,配合Store和Proxy,可以轻松实现数据的加载、排序、过滤和编辑等功能,所有这些操作都可以与数据库交互。 通过以上知识点,我们可以构建一个完整的EXT...
在IT领域,这个标题涉及到的是一个使用EXT JS(一种基于JavaScript的富客户端框架)和JSON(JavaScript Object Notation)数据格式,结合SQL Server数据库实现分页功能的示例。EXT JS允许开发者创建复杂的、交互式的...
在这个例子中,我们将探讨如何使用EXT连接SQL Server数据库,实现Editgridpanel的数据展示、分页、查询和删除功能。 首先,EXT中的Editgridpanel是一个可编辑的表格组件,用于显示和编辑数据。它集成了数据绑定和行...
结果在extjs的老家找到一个前辈写的代码,可以在grid上面加上合计, <br>但是却只能合计grid里面的数据,但是我们平常一般是只显示20行或者30行,这样的合计就没有什么意义,我们的合计数据是单独从数据库里面...
这个例子在.NET环境中展示了如何有效地使用ExtGrid,包括显示数据、增删改查(CRUD)操作以及分页功能。下面将详细介绍这些知识点。 1. **Ext JS**:Ext JS是一个用于构建富客户端Web应用的JavaScript框架,它提供...
在"Ext.NET后台分页增删改"这个主题中,我们将探讨如何利用Ext.NET实现数据库后台分页、树形视图操作以及Grid面板的CRUD(创建、读取、更新和删除)功能。 首先,让我们深入了解一下后台分页。在Ext.NET中,为了...
后台使用的是struts2生成Ext所需要的json,把webroot下的ext4下面加入ext的开发包,然后再把create.sql中的脚本在数据库中执行,代码就可以跑起来了,我用的是mysql数据库
这篇博客“Ext中对于多种store数据分页实现示例”将深入探讨EXT JS中如何实现数据的分页展示,这对于处理大量数据的应用至关重要。 首先,EXT JS提供了两种主要的分页方式:服务器端分页(Server-side pagination)...
首先,EXT JS的分页组件是建立在Grid Panel基础上的,通过配置Store和Pager组件来实现。在给定的示例中,EXT JS与Struts2框架结合,使用MVC模式处理请求和响应。 在`DisplayAction`类中,我们看到了一个模拟数据...
### Ext + DWR 实现分页功能 #### 一、引言 在Web开发中,分页是一项常用的功能,尤其当数据量较大时,合理的分页处理不仅能提升用户体验,还能减轻服务器的压力。本文将详细介绍如何利用Ext框架结合DWR(Direct ...
通过研究这个例子,你可以更好地理解和掌握Ext Grid的使用,同时也可以学习到如何处理日期和时间,以及如何与数据库进行交互。 总之,Ext Grid是Ext JS中强大的数据展示工具,结合其他组件和JavaScript的日期处理...
通过前后端的紧密协作,它可以提供类似Ext Grid的功能,包括无刷新的分页、排序和过滤,为.NET开发者提供了便捷的数据展示解决方案。在实际项目中,可以根据具体需求对其进行扩展和定制,以满足各种复杂场景的需求。