Ext2.0中grid表格分页的问题???????? - Web 开发 / Ajax
这是我做的一个grid表格分页例子,从一个jsp相应产生数据返回到客户端。可是怎么在客户端都得不到服务器产生的数据,服务器确实也产生了数据。请各位ext前辈帮帮忙看看怎么问题,谢谢啦!
下面是Ext的js代码:
Ext.onReady(function(){
var sm = new Ext.grid.CheckboxSelectionModel();
var cm = new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(),
sm,
{header:'编号',dataIndex:'id',sortable:true},
{header:'名称',dataIndex:'name',sortable:true,renderer:function(value){
if(value=='male'){
return "<span style='color:red;font-weight:bold;'>红男</span><img src='./img/1.PNG'>";
}else{
return "<span style='color:green;font-weight:bold;'>绿女</span><img src='./img/2.PNG'>";
}
}},
{header:'性别',dataIndex:'sex',sortable:true},
{header:'描述',dataIndex:'descn',sortable:true}
]);
cm.defaultSortable = true;
// var data = [
// ['1','name1','male','descn1'],
// ['2','name2','female','descn2'],
// ['3','name3','male','descn3'],
// ['4','name4','female','descn4'],
// ['5','name5','male','descn5'],
// ['6','name6','male','descn1'],
// ['7','name7','female','descn2'],
// ['8','name8','male','descn3'],
// ['9','name7','female','descn2'],
// ['10','name8','male','descn3'],
// ['11','name8','male','descn3']
// ];
var ds = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:'page.jsp'}),
reader: new Ext.data.JsonReader({
totalProperty: 'totalProperty',
root: 'root'
},
[
{name: 'id',mapping:'id'},
{name: 'name',mapping:'name'},
{name:'sex',mapping:'sex'},
{name: 'descn',mapping:'descn'}
]),
remoteSort:true
});
var grid = new Ext.grid.GridPanel({
el: 'grid',
title:'Ext Grid Test',
width:450,
height:410,
trackMouseOver:false,
loadMask: {msg:'正在加载数据,请稍侯……'},
store:ds,
cm: cm,
sm:sm,
bbar: new Ext.PagingToolbar({
pageSize: 5,
store: ds,
displayInfo: true,
displayMsg: '当前显示 {0} - {1}条记录 /共 {2}条记录',
emptyMsg: "No topics to display"
})
});
grid.render();
ds.load({params:{start:0, limit:5}});
});
下面的是服务器代码,jsp:
<body>
<%
String start = request.getParameter("start");
String limit = request.getParameter("limit");
int index = Integer.parseInt(start);
int pageSize = Integer.parseInt(limit);
String json = "{totalProperty:100,root:[";
for (int i = index; i < pageSize + index; i++) {
json += "{id:" + i + ",name:'" + i + ",sex:'sex"+i+"',descn:'descn" + i
+ "'}";
if (i != pageSize + index - 1) {
json += ",";
}
}
json += "]}";
response.getWriter().write(json);
System.out.print(json);
%>
</body>
</html>
[解决办法]
首先你要看看你是不是直接返回的JSP页面 还是用out.print输入来的 直接返回JSP页面会出现很多不必要的符号 导致无法解析成JSON字符串 还有就是 你的字符串中是不是有单引号,反斜线之类的特殊符号 也会导致JSON解析错误
这个地方有个如何处理特殊符号的办法
http://www.shareofo.com/forum/topic_detail.jsp?forum_id=bbecbfa019027778011903782c9a0007
[解决办法]
建议用浏览器打开page.jsp,将页面的源代码另存为静态页面。这样可以通过修改静态页面的方法进行调试。
我通过这个方法改好了xml 格式的 grid 显示(问题出在我的 xml 文件头有一个空行),不过 JSON 没试过。