en_wan 2010-03-16 15:48
浏览 276
已采纳

jqGird分页

请问jquery 的jqGrid插件能不能数据在前台js中分页的,就是说,我数据一次性从后台取出,在前台页面通过jqGrid来自动分页,如:我有90条记录一次给前台,而jqGrid帮我在前台实现共10页,每页10条记录的显示

  • 写回答

3条回答 默认 最新

  • suziwen 2010-03-16 20:48
    关注

    建议你改这段代码
    [code="js"]
    var populate = function () {
    if(!grid.hDiv.loading) {
    beginReq();
    var gdata, prm = {nd: (new Date().getTime()), _search:ts.p.search};
    prm[ts.p.prmNames.rows]= ts.p.rowNum; prm[ts.p.prmNames.page]= ts.p.page;
    prm[ts.p.prmNames.sort]= ts.p.sortname; prm[ts.p.prmNames.order]= ts.p.sortorder;
    gdata = $.extend(ts.p.postData,prm);
    if (ts.p.search ===true) {gdata =$.extend(gdata,ts.p.searchdata);}

    if ($.isFunction(ts.p.datatype)) {ts.p.datatype(gdata);endReq();}
    var rcnt = ts.p.scroll===false ? 0 : ts.rows.length-1;
    switch(ts.p.datatype)
    {
    case "json":
    $.ajax({url:ts.p.url,type:ts.p.mtype,dataType:"json",data: gdata, complete:function(JSON,st) { if(st=="success") {addJSONData(eval("("+JSON.responseText+")"),ts.grid.bDiv,rcnt); JSON=null;if(loadComplete) {loadComplete();}}}, error:function(xhr,st,err){if(loadError) {loadError(xhr,st,err);}endReq();}, beforeSend: function(xhr){if(loadBeforeSend) {loadBeforeSend(xhr);}}});
    if( ts.p.loadonce || ts.p.treeGrid) {ts.p.datatype = "local";}
    break;
    case "xml":
    $.ajax({url:ts.p.url,type:ts.p.mtype,dataType:"xml",data: gdata , complete:function(xml,st) {if(st=="success") {addXmlData(xml.responseXML,ts.grid.bDiv,rcnt); xml=null;if(loadComplete) {loadComplete();}}}, error:function(xhr,st,err){if(loadError) {loadError(xhr,st,err);}endReq();}, beforeSend: function(xhr){if(loadBeforeSend) {loadBeforeSend(xhr);}}});
    if( ts.p.loadonce || ts.p.treeGrid) {ts.p.datatype = "local";}
    break;
    case "xmlstring":
    addXmlData(stringToDoc(ts.p.datastr),ts.grid.bDiv);
    ts.p.datastr = null;
    ts.p.datatype = "local";
    if(loadComplete) {loadComplete();}
    break;
    case "jsonstring":
    if(typeof ts.p.datastr == 'string') { ts.p.datastr = eval("("+ts.p.datastr+")");}
    addJSONData(ts.p.datastr,ts.grid.bDiv);
    ts.p.datastr = null;
    ts.p.datatype = "local";
    if(loadComplete) {loadComplete();}
    break;
    case "local":
    case "clientSide":
    ts.p.datatype = "local";
    sortArrayData();
    break;
    }
    }
    };
    [/code]

    多加一个case "self":自己处理的逻辑

    这样的话,导航条,查询什么的都会经过该函数。

    页面载入时将所有数据放到一个全局变量里,
    JQGRID每次请求时都从该变量取,并根据你当前的条件(页数,查询条件等)过滤结果,然后再把结果集交给JQGRID原来的函数处理
    (比如if(loadComplete) {loadComplete();})。

    大体思路是这样

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复