首页 > 代码库 > pagination分页问题

pagination分页问题

  一,真心话(可能是我蠢0.0):

     20天easyui学习后,这里想整理下一个困扰我很久的分页问题,在附代码前,说下为什么会困扰我那么久。easyui很重要的一点就是控件初始化问题(最好统一,要么都在Js里,要么都在页面里),这在分页问题里特别重要,当你想要用datagrid自带的pagination属性时,千万不要在页面中初始化,因为那样当你在js里获取后台传来的表格数据时,不管你怎么选择pagesize和pagenumber时,表格都不会刷新的。下面就分享下前后台代码。写的可能不是很好吧,多多包涵。

 

  二,效果图(就是那么朴实0.0):

    技术分享

 

 三,js代码(写的有点丑0.0):

  datagrid 初始化:

 $(‘#orderquery_datagrid‘).datagrid({
      url:‘/DrugManageSystem/getOrderServlet?pagenumber=1&pagesize=10‘,
      fitColumns:true,
      rownumbers:true,
      singleSelect:true,
      pagination:true,
      columns:[[    
       {field:‘op‘,width:90,align:‘center‘,
            formatter:formatdetail},
       {field:‘ordercompany‘,width:195,align:‘center‘},  
       {field:‘orderdate‘,width:140,align:‘center‘},
       {field:‘ordercount‘,width:90,align:‘center‘},
       {field:‘billcount‘,width:90,align:‘center‘},   
       {field:‘goodscount‘,width:90,align:‘center‘},   
       {field:‘ordertype‘,width:90,align:‘center‘},
       {field:‘status‘,width:90,align:‘center‘}, 
       ]],});

 

  获取datagrid 里pagination控件:         

  $(‘#orderquery_datagrid‘).datagrid(‘getPager‘).pagination({
      pageSize: 10,
      pageList: [10,20,30],
      beforePageText: ‘第‘,                          
      afterPageText: ‘页    共 {pages} 页‘,                                 
      displayMsg: ‘当前显示 {from} - {to} 条记录   共 {total} 条记录‘, 
      onSelectPage:function(pageNumber,pageSize){
getData(pageNumber,pageSize);} );
//(beforePageText,afterPageText,displayMsg这些属性的值可以 自定义样式,也可以不写,自带)

  发送给后台的 ajax 函数:

  function getData(pageNumber,pageSize){
     $.ajax({
         type:"Post",
         url:"/DrugManageSystem/getOrderServlet",
	 data:{"pagesize":pageSize,"pagenumber":pageNumber},
	 async:false,
	 dataType:"json",
         success:function(showcontentarray){	      
	    $(‘#orderquery_datagrid‘).datagrid(‘loadData‘,showcontentarray);
	 },
	 error:function(){alert("加载失败");}
	 );
   }

四,后台代码(耐心看,虽然丑0.0):

 

    Servlet部分:      

 public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8");
int pagesize= Integer.parseInt(request.getParameter("pagesize")); int pagenumber= Integer.parseInt(request.getParameter("pagenumber")); JSONObject object=new OrderBLL().getOrder(pagenumber, pagesize); PrintWriter out=response.getWriter(); out.print(object); out.flush(); out.close(); }

    BLL层:  

  public JSONObject getOrder(int showpage,int pagesize){
//DAO层取出所有数据 List<Order> list=new OrderDAO().getOderData();
JSONArray array=new JSONArray();

//分页函数 List<Order> list1=new OrderPageNation().orderPage(list,showpage, pagesize);
array=JSONArray.fromObject(list1); JSONObject ob=new JSONObject(); ob.put("total",list.size()); ob.put("rows", array); return ob; }

这里分页的实现,我是把所有数据都取出后,在根据pagenumber和pagesize利用函数对List进行操作

   分页函数(因为这是比较早前写的,有点糙0.0:    

public class OrderPageNation {

public List<Order> orderPage(List<Order> alldata,int showpage,int pagesize){ List<Order> list =new ArrayList<Order>(); int datacount=alldata.size(); int pagecount=getPagecount(datacount, pagesize); int foot; int head=datacount-pagesize*(showpage-1)-1; if(showpage==pagecount){ foot=0; } else{ foot=datacount-pagesize*showpage; }

//我这里是倒叙输出,后添加的记录显示在前面 while(showpage<=pagecount){ for(int j=head;j>=foot;j--){ Order jobject=alldata.get(j); list.add(jobject); } return list; } return null; }


//获取总页数 public int getPagecount( int datacounts,int pagesizes) { int number=0; if(datacounts%pagesizes==0){ number=datacounts/pagesizes; } else{ number=datacounts/pagesizes +1; } return number; }
}

    DAO层 这里就不写了

 

 

 

   以上就是分页问题的所有总结了,希望看到的人有所帮助,后面还会陆续写一些其他控件的问题,第一次分享博客,写的不好的地方见谅......21:36:23

pagination分页问题