即使使用正确的参数也无法显示最后一页

Sli*_*lim 5 jquery jqgrid

我和jqgrid一起战斗了大约8天(或更长时间),我做了一切除了小小的事情.我有一个大型数据库,我试图按部分显示它.我的意思是,SQL查询被执行每当时间next,prev,last,first或者当用户输入一个页码.我管理了它,一切都是正确的,但现在网格没有显示正确的最后一页.我的意思是,即使有42页,它显示1中的1.

现在,当我输入页码时,网格正在刷新并显示正确的结果,但是寻呼机说的是1 of 1,5 of 1,依此类推.

我用过的是:

jQuery("#list").jqGrid({ 
        datatype: "jsonstring",
        datastr: JSON.stringify(gridDtls),
        jsonReader:{
          root: "rows",
          page: "page",
          total: "total",
          records: "records",
          repeatitems: false,
          id: "0"
        },
Run Code Online (Sandbox Code Playgroud)

我每次点击一个按钮时用来运行查询的代码都在这里(注意下面的代码仅在按下enter时工作,因为按钮处于非活动状态):

onPaging: function(pgButton){ 
            var status = returnUserStatus();
            var page1 = $(this).jqGrid("getGridParam", "page");
            var totalPages = $(this).getGridParam('lastpage');

            if(pgButton=="next_pager"){ 


            } 
            if(pgButton=="prev_pager"){ 


            } 
            if(pgButton=="last_pager"){ 

            }
            if(pgButton=="first_pager"){ 

            }else if((pgButton !="first_pager") && (pgButton !="last_pager") && (pgButton !="prev_pager") && (pgButton !="next_pager"))     

        },
Run Code Online (Sandbox Code Playgroud)

一切似乎都对我不对.为什么jqgrid没有返回正确的页面?我确信我错过了一些小的东西.请帮我!!!

Ole*_*leg 5

我想你问题的原因是datatype: "jsonstring"你使用服务器端分页.而不是你应该使用datatype: "json".

理解:类型datatype: "jsonstring"几乎相同datatype: "local".最重要的区别是,jqGrid的使用jsonReader中的情况下datatype: "jsonstring",而不是localReader中的情况下使用datatype: "local".数字页面将由jqGrid计算,并且将忽略服务器响应的值totalrecords来自服务器响应的值.

jqGrid提供了很多自定义选项,几乎可以向服务器发送任何Ajax请求并读取几乎任何响应.您只需使用相应的选项即可.因为您没有发布有关服务器接口的任何详细信息,所以我不能在此处写更多详细信息.

我建议你检查选项prmNames,ajaxGridOptions回调serializeGridDataloadBeforeSend.该选项允许自定义对服务器的请求.另一个选项jsonReaderjsonmap回调beforeProcessing允许读取服务器响应.

更新:该演示演示了如何在jqGrid的分页上自动datatype: "json"发送Ajax请求.选择网格变得很重要.在你的情况下,它似乎是列.所以代码可以idlogin

$("#userslist").jqGrid({
    url: "admin",
    postData: {
        WrJOB: "listUsers",
        companyId: function () { return $("#companyId").val(); },
        userStatus: function () { return returnUserStatus(); }
    },
    jsonReader: {
        root: "gridDtls.rows",
        page: "gridDtls.page",
        total: "gridDtls.total",
        records: "gridDtls.records",
        repeatitems: false
    },
    prmNames: {page: "pageNum"},
    colModel: [
        {name: 'login', key: true, ...}
    ...
});
Run Code Online (Sandbox Code Playgroud)

对URL的请求"admin"pageNum自动包含参数."rows"参数的值为20.这是页面的大小.如果用户在寻呼机中选择另一个值(请参阅参考资料rowList: [20, 40, 60]),则当前值将发送到服务器.该选项prmNames将默认参数重命名"page""pageNum".以同样的方式,您可以重命名将jqGrid发送到服务器的任何其他参数.用法null为价值将防止参数发送给服务器.例如,您可以使用

prmNames: {page: "pageNum", nd: null, search: null, sort: null, order: null}
Run Code Online (Sandbox Code Playgroud)

消除发送不使用的参数.