jqGrid 分頁


這兩天一直在搞jqGrid分頁,焦頭爛額,不過還是有點收獲的(主要是后台分頁);
 
jqGrid分頁可以分為兩種,遠程數據(服務器數據)分頁和本地數據分頁,
 
 
先看遠程數據分頁:
 
$("#testGrid").jqGrid({
   mtype: "POST",
   datatype: "json",     //返回的是JSON格式的數據
    pager: "#userListPg", //表格分頁
   rowNum: 2, // 每頁多少行,用於分頁
   rownumbers: true,//顯示行號
   colModel  :  userCM,// 自定義
   jsonReader: {
      id  : "id"  //數據唯一值,
      root: 'users',      //加載的數據
      page: 'page',       //當前頁
      total: 'total',     // 很重要 定義了 后台返回的總頁數名稱。
      records: 'records', // 后台返回的總數據條數;     以上5個參數一定要跟后台返回的json格式數據中,名稱相同
      repeatitems: false,
  },
  onPaging: function (pageBtn) {     //翻頁按鈕點擊事件,pageBtn 與 pager(表格分頁有關),為 next_ 加上分頁名
      var re_page = $(this).getGridParam('page');//獲取返回的當前頁
      var re_rowNum = $(this).getGridParam('rowNum');//獲取每頁數
      if (pageBtn === "next_userListPg") {
         queryFunc(re_page, re_rowNum);
     }else if (pageBtn === "prev_userListPg") {
         queryFunc(re_page, re_rowNum);
     }else if (pageBtn === "last_userListPg") {
         queryFunc(re_total, re_rowNum);
     }else if (pageBtn === "first_userListPg") {
         queryFunc(1,  re_rowNum);
     }
  },
});
 
function queryFunc(cr_page,size) {
   //加載數據:
   $("#testGrid").jqGrid('setGridParam',{
      url: "getUsr.do",
      postData:{ page : cr_page, size : size, 'user_age' : 20}, //發送數據,查第一頁,只查2條(grid rowNum),找到所有20歲的人  
  }).trigger("reloadGrid");
}
 
 
后台返回數據:
{
  page: "1",   //當前頁
  total: "3"   //一共的頁數
  records :"10",//總條數
  users :[
       {id:"1",user_name:"張三",age:"20",},
       {id:"2",user_name:"李四",age:"20",},
  ],
}
 
加載本地數據:
 
初始化grid:
 $("#testGrid").jqGrid({
   mtype: "POST",
   datatype: "local",     //返回的是JSON格式的數據
   pager: "#toolListPg", //表格分頁
   rowNum: 2, // 每頁多少行,用於分頁
   rownumbers: true,//顯示行號
   colModel  :  userCM,// 自定義
   onPaging: function (pageBtn) {     //翻頁按鈕點擊事件,pageBtn 與 pager(表格分頁有關),為 next_ 加上分頁名
      var re_page = $(this).getGridParam('page');//獲取返回的當前頁
      var re_rowNum = $(this).getGridParam('rowNum');//獲取每頁數
      if (pageBtn === "next_userListPg") {
         queryFunc(re_page, re_rowNum);
      }else if (pageBtn === "prev_userListPg") {
         queryFunc(re_page, re_rowNum);
      }else if (pageBtn === "last_userListPg") {
          queryFunc(re_total, re_rowNum);
      }else if (pageBtn === "first_userListPg") {
         queryFunc(1,  re_rowNum);
      }
   },
});
 
 
function queryFunc(cr_page,size){
  $.aiax({
     type:"post",
     url : "getUsr.do",    
     data:{
        page: cr_page,
        size: size
        user_age :20
     },
     async:false,  //同步     
     success:function (data) {
         data = JSON.parse(data); //裝換成JSON格式
         //加載數據
        $("#testGrid").jqGrid('setGridParam', {
             data :data.users,
             localReader:{
                root: function () {returndata.users},
                page: function(object){ returndata.page},
                total:function(object){ returndata.total},
                records:function(object){ returndata.records},
               repeatitems : false
             },
       }).trigger("reloadGrid");
     },
     error : function(xhr, stat, e){
        console.error(xhr);
     }
  });
}
 
本地數據:
data:{
  page: "1",   //當前頁
  total: "3"   //一共的頁數
  records :"10",//總條數
  users :[
       {id:"1",user_name:"張三",age:"20",},
       {id:"2",user_name:"李四",age:"20",},
  ],
}
 
 這樣就能加載進去了,
 加載遠程數據是異步方法,在執行過程中界面還可以操作,沒有數據時沒辦法彈框報錯
 個人更新加載本地數據,先將數據從服務器上獲取再加載,加載的方法可以封裝,不用每次都寫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM