ext服务器端分页

还是先上效果图,简单描述下吧,点击查询,把结果展示在左边的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("yyyyMMdd").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 : "Ymd",

              allowBlank : false,

              editable : false,

              width:110

           },

           {

              xtype:"label",

              colspan:1,

              html:""

           },

           {

              xtype : "datefield",

              id : "jsrqXg",

              name : "jsrqXg",

              format : "Ymd",

              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( [//左边gridcm

    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( {// 左边gridstore,因为需需要分页,所以不需要totalpropertyroot属性,只需要定义URLfileds

     url : CONTEXT_PATH+"/sjzlAction!getRzResult.sa",

          autoDestroy: true,

        fields : [ 'JCSJ','JCZXR','YCAJS','PC']

        

    });

   

   

     var rzrid = new Ext.grid.GridPanel( {// 将先前的cmstore加入

          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();

    }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值