html代码:<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>XML Grid Example</title>
<link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />  <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="ext/ext-all.js"></script>
    
<script type="text/javascript" src="xml-grid.js"></script>
</head>
<body>
<div id="myGrid"></div></body>
</html>js 代码:var myInfo = Ext.data.Record.create([  
{name: 'name', mapping: 'name'}, 
{name:'time',mapping:'time'}
]);
var myReader = new Ext.data.XmlReader({ 
totalProperty: 'totalRecords',
record:'record',
idProperty:'id'},
myInfo
);
var ds = new Ext.data.Store({ 
proxy:new Ext.data.HttpProxy({url:'Getdata'}),
reader:myReader
});
//重载RowNumberer,使每页的行编号自动增加
Ext.grid.RowNumberer = Ext.extend(Ext.grid.RowNumberer, { 
renderer: function (value, cellmeta, record, rowIndex, columnIndex, store) 
{       
return store.lastOptions.params.start + rowIndex + 1;   
}
});
var rownum = new Ext.grid.RowNumberer();
rownum.width = 40;
var cm = new Ext.grid.ColumnModel([ 
rownum,  
{ header: '姓名', dataIndex: 'name',sortable:true }, 
{ header: '时间', dataIndex: 'time' }
]);
Ext.onReady(function () { 
Ext.BLANK_IMAGE_URL = 's.gif'; 
var grid = new Ext.grid.GridPanel({
renderTo: 'myGrid', 
loadMask: { msg: '数据请求中,请稍后...' },
cm: cm,
store: ds,
stripeRows: true, 
//隔行颜色不同                   
title: '事件记录报表',   
width: 600, 
height: 500,    
bbar: new Ext.PagingToolbar({ 
pageSize:2,     
store: ds,       
displayInfo: true,     
beforePageText: '第',      
afterPageText: '/{0}页',       
firstText: '首页',         
prevText: '上一页',     
nextText: '下一页',       
lastText: '尾页',    
displayMsg: '显示 第 {0} 条 到 第 {1} 条 记录,共 {2} 条记录',  
emptyMsg: '无记录'        })    });  
ds.load({params: { start: 0, limit: 2 }}); 
});

     java代码package getdata;import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
import java.text.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Getdata extends HttpServlet { /**
 * Constructor of the object.
 */
public Getdata() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request,response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
response.setCharacterEncoding("GBK");
int start = new Integer(request.getParameter("start")).intValue();
int limit = new Integer(request.getParameter("limit")).intValue();
List datalist = new ArrayList();     
datalist = getdata();   
    int end = start + limit;//得到数据总量  
    String datastr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><records><totalRecords>"+ datalist.size() +"</totalRecords>";  
    //该判断用于最后一页数据小于每页行数的情况,更新要返回的limit      
    if (end > datalist.size())//如果请求数据总量大于实际数据总量   
     {          
     limit = datalist.size() - start;//修改将要取值的条数    
     }       
    for (int i = 0; i < limit; i++) 
    {            datastr += datalist.get(i);//取值    
    }                datastr += "</records>";   
  
     out.println(datastr);
//System.out.println(datastr);
//System.out.println(start);
//System.out.println(limit);

}
public void init() throws ServletException {

}
public static List  getdata()
{
 List datalist = new ArrayList();   
 //string data = "<records><totalRecords>100</totalRecords>";     
 String data = "";       
 for (int i = 1; i <= 100; i++)        {   
 data = "<record>";      
 data += "<id>" + i + "</id>";       
 data += "<name>" + "l " + i + " 4" + "</name>";  
 data += "<time>" + getdate() + "</time>";  
 data += "</record>";         
 datalist.add(data);       
 data = "";       
 }         
 return datalist;
}
public static String getdate(){
//DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");         
DateFormat format2= new SimpleDateFormat("yyyy-MM-dd");          String adate="";
Date date=new Date();
adate=format2.format(date);  return adate;
}
}不能在页面显示数据,但是把Getdata  换成xml文件就能显示,getdata生成的数据和xml中的数据文件一样

解决方案 »

  1.   

    ds.load({params: { start: 0, limit: 2 }}); 貌似这句放错了吧,还要放下面来吧
      

  2.   

    错了,var ds = new Ext.data.Store({ 
        proxy:new Ext.data.HttpProxy({url:'Getdata'}),
        reader:myReader
        });
    这个要放到onready里面来
      

  3.   

    getdata生成的数据:<?xml version="1.0" encoding="UTF-8" ?> 
    - <records>
      <totalRecords>1000</totalRecords> 
    - <record>
      <id>1</id> 
      <name>l1</name> 
      <time>2010-12-13 13:12:11</time> 
      </record>
    - <record>
      <id>2</id> 
      <name>l2</name> 
      <time>2010-12-13 13:12:11</time> 
      </record>
      </records>
      

  4.   

    终于自己搞定了,其实是因为少加了句
    response.setContentType("text/xml");