还是先上效果图,简单描述下吧,点击查询,把结果展示在左边的grid的,点击左边的行,在右边出现同一批次数据,实现客户端分页
代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*" %> <% response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires", 0); String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; String now = new java.text.SimpleDateFormat("yyyy年MM月dd日").format(new Date()); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>检查日志查看</title> <style type="text/css"> .icon-search { background-image: url(<%=basePath%>/ext/button/style/icons/search.gif) !important;
} </style> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <script type="text/javascript"> var CUR_DATE = "<%=now%>";//当前日期 </script> <%@include file="/ext/inc/ext-js3.jsp"%> <script type="text/javascript" src="../common/common.js"></script> <script type="text/javascript"> Ext.onReady(function() {
var pnNorth=new Ext.Panel({ id:'pnNorth', autoWidth:true, layout:'fit', //然子元素充满容器 frame:true, title:"查询条件", autoHeight:true, region:'north', tbar : new Ext.Toolbar([{ xtype : "buttongroup", columns:5, //一行表示5列,超过的会到下一行 padding : "0 0 0 0", frame : false, items:[ { xtype:"label", colspan:1, html:"统计时间段:" }, { xtype : "datefield", id : "qsrqXg", name : "qsrqXg", format : "Y年m月d日", allowBlank : false, editable : false, width:110 }, { xtype:"label", colspan:1, html:"至" }, { xtype : "datefield", id : "jsrqXg", name : "jsrqXg", format : "Y年m月d日", allowBlank : false, editable : false, value:CUR_DATE, width:110 },{ xtype : "button", iconCls:'icon-search', text:"查询", handler:function(){ if(Ext.getCmp("qsrqXg").getValue()==null||Ext.getCmp("qsrqXg").getValue()==""||Ext.getCmp("jsrqXg").getValue()==null||Ext.getCmp("jsrqXg").getValue()==""){ Ext.Msg.alert('提示框', '统计时间起始都不可为空'); }else{ //执行查询 //先清空两个列表的stroe var starttime=new Date(Ext.getCmp("qsrqXg").getValue()).format("Ymd"); var endtime=new Date(Ext.getCmp("jsrqXg").getValue()).format("Ymd"); rzstore.removeAll(); jgstore.removeAll(); rzstore.load({ params : { starttime:starttime, endtime:endtime }
});
} } }
] }])
});
var rzcm = new Ext.grid.ColumnModel( [//左边grid的cm new Ext.grid.RowNumberer(), { header : "检查时间", dataIndex : 'JCSJ', sortable : true }, { header : "检查人", dataIndex : 'JCZXR', sortable : true }, { header : "异常案件数", dataIndex : 'YCAJS', sortable : true }, { header : "批次号", dataIndex : 'PC', hidden:true }]);
var rzstore = new Ext.data.JsonStore( {// 左边grid的store,因为需需要分页,所以不需要totalproperty和root属性,只需要定义URL和fileds url : CONTEXT_PATH+"/sjzlAction!getRzResult.sa", autoDestroy: true, fields : [ 'JCSJ','JCZXR','YCAJS','PC']
});
var rzrid = new Ext.grid.GridPanel( {// 将先前的cm和store加入 title:"日志汇总数据", frame : true,// 渲染表格面板 stripeRows : true,// 显示斑马线 loadMask:{msg:"数据加载中,请稍等..."}, store : rzstore,// 设置表格对应的数据集 cm : rzcm, listeners : { 'rowclick':function(grid, rowIndex){//监听行点击事件 var record=grid.getStore().getAt(rowIndex);//获得点击的行数据 jgstore.removeAll(); jgstore.baseParams.pc =record.data.PC; 必须要设置,不能再下面的load设置,因为每一次分页都要有这个参数来过滤数据 jgstore.load({ //加载右边的列表数据并分页 params : { start : 0, limit : 50 }
}); } } });
var pnWest=new Ext.Panel({ id:'pnWest', width:450, height:'auto', region:'west', layout:'fit', //然子元素充满容器
items:rzrid
});
var jgcm = new Ext.grid.ColumnModel( [// 创建日志 new Ext.grid.RowNumberer(), { header : "案号", dataIndex : 'AH', sortable : true }, { header : "承办部门", dataIndex : 'CBBM', sortable : true }, { header : "承办人", dataIndex : 'CBR', sortable : true },{ header : "规则号", dataIndex : 'GZID', sortable : true } , { header : "规则名称", dataIndex : 'BH', sortable : true }, { header : "规则说明", dataIndex : 'MC', sortable : true }]);
var jgstore = new Ext.data.JsonStore( {//定义数据集对象 url : CONTEXT_PATH+"/sjzlAction!getRz.sa", autoDestroy: true, fields : [ 'AH','CBBM','CBR','GZID','BH','MC'], root:'root', //? totalProperty : "totalCount", baseParams:{ pc:"" 因为分页要使用到此参数,开始为“” }
}); 后来拼接的数据时: {"totalCount":170,"root":[{"GZID":"1","CBBM":"","AHDM":"115100000000009","FYDM":null,"BH":"规则1","AH":" ","JCZXR":"3200000001","CBR":"","XTAJLX":"51",
var jggrid = new Ext.grid.GridPanel( {// 创建Grid表格组件 title:"结果列表", frame : true,// 渲染表格面板 stripeRows : true,// 显示斑马线 loadMask:{msg:"数据加载中,请稍等..."}, store : jgstore,// 设置表格对应的数据集 cm : jgcm, bbar : new Ext.PagingToolbar( { pageSize : 50, displayInfo : true, store : jgstore, displayMsg : '显示第{0}条到{1}条记录,一共{2}条记录', emptyMsg : '没有记录' }) });
var pnCenter=new Ext.Panel({ region:'center', layout:'fit',//然子元素充满容器 items:jggrid }); var vp=new Ext.Viewport({ layout:"border", items:[ pnNorth, pnWest, pnCenter //布局上,左,中 ] });
})
</script>
</head> <body><br><br></body> </html> |
服务器端java代码,先写左边不需要分页的
public String queryRzmain(String starttime, String endtime) { JSONArray ja = new JSONArray(); List list = jdbc.queryForList("select CASE WHEN JCSJ IS NOT NULL THEN CONVERT(VARCHAR,DATEPART(yy,JCSJ))+'年'+CONVERT(VARCHAR,DATEPART(mm,JCSJ))+'月'+CONVERT(VARCHAR,DATEPART(dd,JCSJ))+'日' END AS JCSJ, JCZXR,YCAJS,PC from JC_RZ_MAIN WHERE JCSJ>=convert(datetime,'" + starttime + "',108) AND JCSJ<=convert(datetime,'" + endtime + "',108)"); Iterator iter = list.iterator(); while (iter.hasNext()) { Map map = (Map) iter.next(); JSONObject json = new JSONObject(); json.put("JCSJ", map.get("JCSJ")); String jczxr = StringUtils.trim(map.get("JCZXR")); String jczxrmc = ""; if (jczxr.equals(Constants.JCZXR_AUTO)) {// 自动检查 jczxrmc = Constants.JCZXR_AUTO; } else { jczxrmc = CourtUtils.getYhmc(jczxr); } if ("".equals(jczxrmc)) { jczxrmc = jczxr; } json.put("JCZXR", jczxrmc); json.put("YCAJS", map.get("YCAJS")); json.put("PC", map.get("PC")); ja.add(json); } return ja.toString(); } |
右边分页的
public String queryRz(String pc, int start, int limit) {
JSONObject json = new JSONObject(); // 先分别查询jc_jg分页和jc_gzdy全部 List gzList = hibernateDao.queryForList(" FROM JcGzdy"); Map gzMzp = new HashMap(); Iterator iter = gzList.iterator(); while (iter.hasNext()) { JcGzdy jcgzdy = (JcGzdy) iter.next(); gzMzp.put(jcgzdy.getId(), jcgzdy); } Map<String,String> cbbmMap = this.getCbbmMap(); Map<String,String> cbrMap = this.getCbrMap(); // 拼接where条件 StringBuffer sb = new StringBuffer(); sb.append(" WHERE PC=" + pc + ""); // 按分页查询jc_jg PaginateJdbc paginateJdbc = (PaginateJdbc) WebAppContext .getBeanEx("SjzlPaginateJdbc"); PageBean pb = new PageBean(); pb.setCounthql("select count(1) as cnt from JC_RZ " + sb.toString());//获取总记录数的sql pb.setHql("select * from JC_RZ " + sb.toString());获取listde sql pb.setLen(limit);// 每页记录数 pb.setStartRow(start);// 开始行 pb = paginateJdbc.getList(pb); List<Map<String, Object>> list = pb.getResult(); if (list != null && list.size() > 0) { for (Map<String, Object> tmap : list) { JcGzdy gzdy = (JcGzdy) gzMzp.get(tmap.get("GZID")); tmap.put("MC", gzdy.getMc()); tmap.put("CBBM", StringUtils.trim(cbbmMap.get(tmap.get("CBBM")))); tmap.put("CBR", StringUtils.trim(cbrMap.get(tmap.get("CBR")))); tmap.put("BH", gzdy.getBh()); } }//查询这是分页 json.put("root", JSONArray.fromObject(list));// 记录数据项 json.put("totalCount", pb.getTotalRows());// 总记录数 return json.toString(); } |