欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jqGrid 分页

程序员文章站 2022-03-29 19:48:20
这两天一直在搞jqGrid分页,焦头烂额,不过还是有点收获的(主要是后台分页); jqGrid分页可以分为两种,远程数据(服务器数据)分页和本地数据分页, 先看远程数据分页: $("#testGrid").jqGrid({ mtype: "POST", datatype: "json", //返回的 ......
这两天一直在搞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",},
  ],
}
 
 这样就能加载进去了,
 加载远程数据是异步方法,在执行过程中界面还可以操作,没有数据时没办法弹框报错
 个人更新加载本地数据,先将数据从服务器上获取再加载,加载的方法可以封装,不用每次都写