icefeeling的家园

生活就是一本书,需要我们用心去读

 

Ext-Grid-HttpProxy-分页

1、客户端代码

<%
/**
 
* @author lzb
 
* Created on 2008-11-29
 
* 练习使用Ext-form-grid
 
* 
 
*/
 
%>
 
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ include file="http://www.cnblogs.com/http://www.cnblogs.com/../common/common_page.jsp" %>
<%
    
String t_style="http://www.cnblogs.com/../style/"+s_style;
    
String t_image="http://www.cnblogs.com/../image/"+s_image;
    
String t_startdt = request.getParameter("startdt");
    
String t_enddt = request.getParameter("enddt");
    
String t_wtdw = new String(request.getParameter("wtdw").getBytes("iso-8859-1"),"utf-8");
%>
<html>
<head>
<title>练习使用Ext-form-grid</title>
<link href="<%=t_style%>/default/styles.css" rel="stylesheet">
    
<!-- Company css    <link href="<%=t_style%>/default/styles.css" rel="stylesheet"> -->
    
    
<!-- Ext css -->
    
<link rel="stylesheet" type="text/css" href="http://www.cnblogs.com/../resources/css/ext-all.css"/>
    
<link rel="stylesheet" type="text/css" href="../forms.css"/>
    
<link rel="stylesheet" type="text/css" href="http://www.cnblogs.com/examples.css"/>
    
<!-- Company js -->
    
<script language="javascript" src="<%=path%>/script/<%=s_script%>/default/menubar.js"></script>
    
<script language="javascript" src="<%=path%>/script/<%=s_script%>/default/main_page.js"></script>
    
<!-- Ext js -->    
    
<script type="text/javascript" src="http://www.cnblogs.com/../adapter/ext/ext-base.js"></script>
    
<script type="text/javascript" src="http://www.cnblogs.com/../ext-all.js"></script>
    
<script type="text/javascript" src="http://www.cnblogs.com/../source/locale/ext-lang-zh_CN.js"></script>
    
<script type="text/javascript">
        
//使用HttpProxy
        Ext.onReady(function(){
            
var t_wts = Ext.data.Record.create([
                {name: 
'xmmc', mapping: 'xmmc'},    
                {name: 
'wtr'},                       
                {name: 
'wtdwmc', mapping: 'wtdwmc'},
                {name: 
'cwrq', mapping: 'cwrq'},
                {name: 
'jsrxm', mapping: 'jsrxm'},
                {name: 
'jsrq', mapping: 'jsrq'},
            ]);
            
//根据这个代理,获得json数据
            //要用双层编码,后台用一层解码就可以了;
            //js编码,jsp解码,两者是可以转化的
            var t_wtdw = encodeURI(encodeURI("<%=t_wtdw%>"));
            
var proxy = new Ext.data.HttpProxy({url:'lzb-form-grid_getdata_json.jsp?t_kssj=<%=t_startdt%>&t_jssj=<%=t_enddt%>&t_wtdw=' + t_wtdw});
            
//数据读取器
            var reader= new Ext.data.JsonReader({
                totalProperty: 
"total",//数据总条数
                root:"rows",           //将要显示数据的数组
                id:"rt"                //每一行数据的唯一记录
            },t_wts);
            
//创建一个store
            var store=new Ext.data.Store({ proxy:proxy, reader:reader });
            
var grid = new Ext.grid.GridPanel({
                store: store,
                columns: [
                    {header: 
"分类名称", width: 120, dataIndex: 'xmmc', sortable: true},
                    {header: 
"委托人", width: 180, dataIndex: 'wtr', sortable: true},
                    {header: 
"委托单位名称", width: 115, dataIndex: 'wtdwmc', sortable: true},
                    {header: 
"成为日期", width: 100, dataIndex: 'cwrq', sortable: true},
                    {header: 
"接收人姓名", width: 115, dataIndex: 'jsrxm', sortable: true},
                    {header: 
"接收日期", width: 100, dataIndex: 'jsrq', sortable: true}                    
                ],
                renderTo:
'example-grid',
                width:
700,
                height:
500,
                bbar:
new Ext.PagingToolbar(
                {
                    store: store,
                    pageSize:
30,
                    store: store,
                    displayInfo:
true
                })
            });
        
            store.load({params:{start:
0, limit:30}});
        });    
        

    
</script>    
</head>
<body>
    
<div id="example-grid"></div>
</body>
</html>

2、服务端代码

 

<%
/**
 
* @author lzb
 
* Created on 2008-11-29
 
* 练习使用Ext-form-grid
 
* 
 
*/
 
%>
<%@page import="java.net.URLEncoder"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored = "true" %>
<%@ include file="http://www.cnblogs.com/http://www.cnblogs.com/../common/common_page.jsp" %>
<%
    try
    {
        
//json数据
        
String t_kssj = request.getParameter("t_kssj");
        
String t_sjsj = request.getParameter("t_sjsj");
        
String t_wtdw = request.getParameter("t_wtdw");
        t_wtdw 
= java.net.URLDecoder.decode(t_wtdw,"UTF-8");
        
String t_start = request.getParameter("start");
        
String t_limit = request.getParameter("limit");
        System.out.println(t_start
+ ":" + t_limit);

        
//要截取得数据
        
String t_sql = " select * from (select t.xmmc,t.wtr,wtdwmc,t.cwrq,jsrxm,t.jsrq, rownum as rn from txnfxhy_aaxt_b_jbxx t ) where 1=1 ";//
        
        
if(t_wtdw != null && !t_wtdw.equals(""))
        {
            t_sql 
+= " and wtdwmc like'%" + t_wtdw+ "%' ";
        }
        
if(t_kssj != null && !t_kssj.equals(""))
        {
            t_sql 
+= " and firsttime >=to_date('" + t_kssj+ "','YYYY-MM-DD') ";
        }
        
if(t_sjsj != null && !t_sjsj.equals(""))
        {
            t_sql 
+= " and firsttime <= to_date('" + t_sjsj+ "','YYYY-MM-DD')  ";
        }
        System.out.println(t_sql);
        
//查询总数
        Result rs_total 
= db.sqlQuery(t_sql);
        t_sql 
+= "and rn > " + t_start + " and rn < " + t_limit + "" + t_start;
        
                  
        Result rs_sql 
= db.sqlQuery(t_sql);
        
int i = 0;
        
String json = "{total:"+rs_total.getRows()+",rows:[";
        
while(rs_sql.next())
        {
            i
++;
            json 
+= "{'rowid':'"+rs_sql.getString("rowid"+ "','xmmc':'"+ rs_sql.getString("xmmc"+ "','wtr':'"+ rs_sql.getString("wtr"+ "','wtdwmc':'"+rs_sql.getString("wtdwmc"+ "',";
            json 
+= "'cwrq':'"+rs_sql.getString("cwrq"+ "','jsrxm':'" + rs_sql.getString("jsrxm"+ "','jsrq':'" + rs_sql.getString("jsrq"+ "'}";
            
if(i != rs_sql.getRows())
            {
                json 
+= ",";
            }
        }
        json 
+= "]}"
        response.getWriter().write(json);
    }
    catch(Exception ex)
    {
        System.out.println(ex.getMessage());
    }
%>

 

3、总结
1)用post提交数据的书后,必须encodeURI(encodeURI("<%=t_wtdw%>")),像这样编码两次
   在服务段用request取数据的时候,要解码一次。如:t_wtdw = java.net.URLDecoder.decode(t_wtdw,"UTF-8");
2)分页其实就这么简单,start和limit两个参数传进去就ok。如:store.load({params:{start:0, limit:30}});返回json数据的时候,数据总条数很重要;如果一个页面显示所有的数据,或者不显示,一定要看一下,是否是你的sql有问题

posted on 2008-12-10 20:38  lzb  阅读(1285)  评论(0编辑  收藏  举报

导航