用Extjs实现分页自动加载数据的Ajax实现

 
用Extjs实现分页自动加载数据的Ajax实现
2008-04-23 19:20

需要用到的外部js文件为prototype.js,和extjs官方的ext-base.js,ext-all.js,ext-lang-zh_CN.js和resources整个文件夹。所有文件都放在同一个目录下。

----------------------

array-grid-page.html

----------------------

<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=gbk">
   <title>Array Grid Example</title>

   <link rel="stylesheet" type="text/css"
    href="resources/css/ext-all.css" />
   <script type="text/javascript" src="ext-base.js"></script>
   <script type="text/javascript" src="ext-all.js"></script>
   <script type="text/javascript" src="ext-lang-zh_CN.js"></script>

   <script type="text/javascript" src="array-grid-page.js"></script>
   <script type="text/javascript" src="prototype.js"></script>
  
</head>
<body οnlοad="init()">
  
   <h1>
    page Grid Example
   </h1>
   <div id="grid3"></div>
  
<script type="text/javascript">

var TimeoutHandler = null;

function init()
{

   if(isReady)
   {
    try
    {  
     //Ajax.sendGetRequest("data.jsp",true,"callbackAjax(ME.http_request.responseText)");
     var myAjax = new Ajax.Request("data.jsp",
     {
      method: 'get',
      onComplete: callbackAjax
     });
    }
    catch(e)
    {
    alert(e);
    }
  
   seturl();
   }
   else
   {
   setTimeout ("init()", 1000);
   }
  
}

function callbackAjax(rep)
{
   //responseText = req.responseText;
}

function seturl()
{
   clearTimeout(TimeoutHandler);

     ds.load();
    
     TimeoutHandler = setTimeout ("seturl()", 1000);
}

</script>
</body>
</html>

----------------------

array-grid-page.js

----------------------

var sm = null;
var cm = null;
var ds = null;
var grid = null;
var data = null;
var isReady = false;

function renderSex(value) {
    if (value == '男') {
        return "<span style='color:red;font-weight:bold;'>男</span>";
    } else {
        return "<span style='color:green;font-weight:bold;'>女</span>";
    }
}

Ext.onReady(function(){

    sm = new Ext.grid.CheckboxSelectionModel();
    cm = new Ext.grid.ColumnModel([
        new Ext.grid.RowNumberer(),
        sm,
        {header:'编号',dataIndex:'id',width: 100},
        {header:'性别',dataIndex:'sex',width: 100,renderer:renderSex},
        {header:'名称',dataIndex:'name',width: 140},
        {header:'描述',dataIndex:'descn',width: 190}
    ]);
    cm.defaultSortable = true;
    ds = new Ext.data.Store({
        proxy: new Ext.data.HttpProxy({url:'data.jsp'}),
        reader: new Ext.data.JsonReader({
            root: 'root'
        }, [
            {name: 'id'},
            {name: 'sex'},
            {name: 'name'},
            {name: 'descn'}
        ])
    });

    ds.load();

    grid = new Ext.grid.GridPanel({
        el: 'grid3',
        ds: ds,
        cm: cm,
        stripeRows: true,
        sm: sm,
        title: 'JSP->JSON',
        tbar: new Ext.PagingToolbar({
            pageSize: 10,
            store: ds,
            displayInfo: true,
            displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
            emptyMsg: "没有记录"
        }),
        bbar: new Ext.PagingToolbar({
            pageSize: 10,
            store: ds,
            displayInfo: true,
            displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
            emptyMsg: "没有记录"
        }),
       
        height:500,
        autoWidth: true,
        width:600
        //autoHeight: true,
        //没有设置高度的时候一定要设置autoHeight: true,否则数据显示不出来
        //autoWidth: true,
    });
    grid.render();
    grid.getSelectionModel().selectFirstRow();
    isReady = true;
   
})


--------------------

data.jsp

--------------------

<%@ page contentType="text/xml; charset=gbk" language="java" errorPage="" %>
<%@ page language="java" import="java.io.PrintWriter"%>
<%
    response.setHeader("Cache-Control", "no-cache");
response.setCharacterEncoding("gbk");
PrintWriter xmlout = response.getWriter();
    int start = 0;
int limit = 20;
StringBuffer sb = new StringBuffer();

sb.append("{root:[");

for (int i=start;i<limit;i++)
{
   sb.append("{'id':'");
   sb.append(i);
   sb.append("','sex':'");
  
   if(Math.floor(Math.random() * 100)>50){
    sb.append("男");
   }
   else
   {
    sb.append("女");
   }
   sb.append("','name':'姓名 ");
   sb.append(Math.floor(Math.random() * 100));
   sb.append("','descn':'描述 ");
   sb.append(Math.floor(Math.random() * 100));
   sb.append("'}");
   if(i!=limit-1)
   {
    sb.append(",");
   }
   else
   {
    sb.append("]}");
   }
}

String rs = sb.toString();
System.out.println(rs);

try
{
   xmlout.write(rs);
}
catch (Exception e)
{
   e.printStackTrace();
}
finally
{
   xmlout.flush();
   xmlout.close();
}
%>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值