一个简单分页的实例

1.由前端页面发送Ajax请求至服务器端.
   
代码
  1.          function QueryList(no){   
  2.             var url="getXML.do";   
  3.             var pars="pageNo="+no;   
  4.             var ajax=new Ajax.Request(url,{   
  5.             method:'get',   
  6.             parameters:pars,   
  7.             onComplete:showResponse   
  8.             });   
  9.     

 

   

代码
  1.    //回调   
  2.    function showResponse(request){   
  3.   
  4. var parser=new MyXmlParser();   
  5. parser.load(request);   
  6. var dataList=parser.itemList;   
  7.         var pageList=parser.pageList;   
  8.         showTable(dataList,pageList);   
  9.   

   这里用到的是prototype-1.4.0.js中的Ajax对象.
  2.服务器端处理程序到数据库查询数据并生成xml档返回.
  
代码
  1.     StringBuffer resultXML = new StringBuffer();   
  2.         int pageNo = new Integer(request.getParameter("pageNo")).intValue();   
  3.            
  4.         try {   
  5.             resultXML.append("<?xml version='1.0' encoding='gb2312'?>");   
  6.             resultXML.append("<ajax-response>/n");   
  7.             resultXML.append("<root>/n");   
  8.   
  9.             Pagination page = new Pagination(request, 100);   
  10.             List list = this.getTestList(page.getStart(), page.getPageSize());   
  11.             for (int i = 0; i < list.size(); i++) {   
  12.                 TestBean bean = (TestBean) list.get(i);   
  13.                 resultXML.append("<data>/n");   
  14.                 resultXML   
  15.                         .append("/t<id>" + bean.getId().toString() + "</id>/n");   
  16.                 resultXML.append("/t<name>" + bean.getName() + "</name>/n");   
  17.                 resultXML.append("/t<sex>" + bean.getSex() + "</sex>/n");   
  18.                 resultXML.append("/t<age>" + bean.getAge().toString()   
  19.                         + "</age>/n");   
  20.                 resultXML.append("</data>/n");   
  21.             }   
  22.   
  23.             resultXML.append("<pagination>/n");   
  24.             resultXML.append("/t<total>" + page.getTotal() + "</total>/n");   
  25.             resultXML.append("/t<start>" + page.getStart() + "</start>/n");   
  26.             resultXML.append("/t<end>" + page.getEnd() + "</end>/n");   
  27.             resultXML.append("/t<pageno>" + page.getPageNo() + "</pageno>/n");   
  28.             resultXML.append("</pagination>/n");   
  29.   
  30.             resultXML.append("</root>/n");   
  31.             resultXML.append("</ajax-response>");   
  32.         } catch (Exception e) {   
  33.             e.printStackTrace();   
  34.         }   
  35.         writeResponse(request, response, resultXML.toString());   
  36.   
  37.     

 

3.在Ajax响应方法中对xml解析并生成表格显示到页面.

代码
  1.   //显示数据   
  2.          function showTable(dataList,pageList){   
  3.                     try{   
  4.                             //清单部分   
  5.                             var bodyPanel=$("bodyPanel");   
  6.                             var tab = document.createElement("table");   
  7.                             tab.className="datagrid";   
  8.                             tab.id="myTable";   
  9.                                
  10.                             bodyPanel.replaceChild(tab,bodyPanel.firstChild)   
  11.                                
  12.                             var headerrow = tab.insertRow(0);   
  13.                                 
  14.                             createNode(headerrow,'th','header','id');   
  15.                             createNode(headerrow,'th','header','姓名');   
  16.                             createNode(headerrow,'th','header','职业');   
  17.                             createNode(headerrow,'th','header','工资');   
  18.                                
  19.                             for(var i=0;i<dataList.length;i++){   
  20.                                 var row=tab.insertRow(i+1);   
  21.                                 row.className="rows";   
  22.                                 for(var j=0;j<4;j++){   
  23.                                     var col=row.insertCell(j);   
  24.                                     col.innerHTML=dataList[i][j];   
  25.                                 }   
  26.                             }   
  27.                                
  28.                                
  29.                             //分页部分   
  30.                             var total=parseInt(pageList[0][0]);   
  31.                             var start=parseInt(pageList[0][1]);   
  32.                             var end=parseInt(pageList[0][2]);   
  33.                             var current=parseInt(pageList[0][3]);   
  34.                                
  35.                             var c1_HTML='显示 '+(1+start)+' 到 '+end+' 笔,共 '+total+' 笔';   
  36.                             var c2_HTML='';   
  37.                                
  38.                             if(start>0){   
  39.                                 var prvNo=current-1;   
  40.                                 c2_HTML+='<a href="javascript:QueryList('+prvNo+')">[上一页] </a>';   
  41.                             }else{   
  42.                                 c2_HTML+='[上一页] ';   
  43.                             }   
  44.                             var totalPage=parseInt(total/10);   
  45.                             if(total%10!=0){   
  46.                                 totalPage++;   
  47.                             };   
  48.                             for(var i=1; i <=totalPage; i++){   
  49.                                     if(i == 2 && current-6 > 1){   
  50.                                         c2_HTML+='...';   
  51.                                         i = current- 6;   
  52.                                     } else if(i == current + 6 && current +6<totalPage){   
  53.                                         c2_HTML+='...';   
  54.                                         i = totalPage - 1;   
  55.                                     } else{   
  56.                                         if(current==i){   
  57.                                             c2_HTML+='['+current+'] ';   
  58.                                         }else{   
  59.                                             c2_HTML+='<a href="javascript:QueryList('+i+')">'+i+'</a>'+' ';   
  60.                                         }   
  61.                                     }   
  62.                             }   
  63.                                
  64.                             if(current<totalPage){   
  65.                                 var nextNo=current+1;   
  66.                                 c2_HTML+='<a href="javascript:QueryList('+nextNo+')">[下一页]</a>';   
  67.                             }else{   
  68.                                 c2_HTML+='[下一页]';   
  69.                             }   
  70.                             var pagintion = document.createElement("table");   
  71.                             pagintion.className="footer";   
  72.                             var rightDiv=document.createElement('div');   
  73.                             rightDiv.setAttribute("align","right");   
  74.                                
  75.                             var row=pagintion.insertRow(0);   
  76.                             var col_1=row.insertCell(0);   
  77.                             var col_2=row.insertCell(1);   
  78.                                
  79.                             col_1.innerHTML=c1_HTML;   
  80.                             rightDiv.innerHTML=c2_HTML;   
  81.                             col_2.appendChild(rightDiv);   
  82.                             var footPanel=$("footPanel");   
  83.                             footPanel.replaceChild(pagintion,footPanel.firstChild);   
  84.                         }catch(e){   
  85.                             alert("error");   
  86.                         }   
  87.                         highlightTableRows("myTable");   
  88.             }//end showTable   
  89.   
  90.     

 

其中还有用到的分页对象Pagination ,及页面的xml解析对象MyXmlParser这里就不贴code出来了.附件中有Demo.war包和project文件.感兴趣的朋友可以下载来看看.

测试环境如下:
JDK:1.5
开发工具:Eclipse3.1
部署服务器:Tomcat5.5

 

你可能感兴趣的:(一个简单分页的实例)