【问题标题】:Server side pagination in JqGrid (no grid pager parameters)JqG​​rid 中的服务器端分页(无网格分页器参数)
【发布时间】:2015-07-03 07:37:37
【问题描述】:

我有一个需要服务器端分页的 jqGrid,我必须将一些搜索条件与请求 (POST) 一起传递,在初始调用时我能够获取结果,但我无法找到发送方法服务器端分页所需的网格当前页面、索引和大小为mentioned here

我使用 fiddle 和网络选项卡来检查我的请求是否正在生成上述帖子中提到的其他内容,但找不到任何内容

下面是我的代码

JQGrid

        $("#list").jqGrid({
        serializeGridData: function () {
            return {'data': JSON.stringify($('#searchInfo').serializeObject()) };
        },
        url: '/SearchUsers/SearchResult',
        mtype: 'POST',
        datatype: "json",
        jsonReader: {
            page: "currentPage",
            total: "totalPages",
            records: "total",
            root: "rows",
            cell: "",
            id: "0"
        },
        contentType: 'application/json; charset=utf-8',
        rowNum: 10,
        pager: '#pager',
        sortname: 'FirstName',
        sortorder: "asc",
        autowidth: true,
        height: 'auto',
        shrinkToFit: false,
        forceFit: true,
        ignoreCase: true,
        sortable: false,
        colModel: [
            { label: 'ID', name: 'ID', align: "center", key: true, hidden: true, frozen: true },
            { label: 'First Name', name: 'FirstName', align: "left", sopt: ['cn'], frozen: true},
            { label: 'Last Name', name: 'LastName', align: "left", sopt: ['cn']},
            { label: 'Email Address', name: 'EmailAddress', align: "left", sopt: ['cn'] }
        ],
        viewrecords: true, // show the current page, data range and total records on the toolbar
        emptyrecords: "No records to view.",
        rowattr: Searchusers.RowFormatter,
    }).css("font-family", "Arial Narrow");
    $('#list').jqGrid('filterToolbar', { defaultSearch: 'cn' });
    $("#list").trigger("reloadGrid");
    $("#list").jqGrid('setFrozenColumns');
    $(".ui-jqgrid-titlebar-close").remove();

我的 Json 数据

{
“总页数”:“4”, "当前页":"1", “总计”:“35”, “行”:[
{
"ID":"1", "名字":"a", "姓氏":"a", "电子邮件地址":"ab@cd-sg.com", }, {
"ID":"2", "名字":"s", "姓":"k", "电子邮件地址":"sk@co.com", }, {
"ID":"3", "名字":"K", "姓氏":"G", "电子邮件地址":"abc@abc-sg.com", }, {
"ID":"4", "名字":"作为", "姓氏":"asd", "电子邮件地址":"asd@l.co", }, {
"ID":"5", "名字":"K", "姓氏":"B", "电子邮件地址":"KB@FB.com", } . . . 30 多条记录 ] }

有什么帮助吗?

【问题讨论】:

    标签: jquery asp.net-mvc jqgrid pagination


    【解决方案1】:

    我自己不使用serializeObject 插件,但我想它会返回带有您想要发送到服务器的属性的对象。所以您可以尝试将您使用的serializeGridData的代码替换为以下代码

    serializeGridData: function (postdata) {
        return {data: JSON.stringify($.extend({},
            $("#searchInfo").serializeObject(), postdata))};
    }
    

    它应该将来自postdata 的jqGrid 的标准属性与serializeObject 插件返回的对象结合起来。

    【讨论】:

    • @Oleg :很好的答案,请你告诉我如何静态设置 jqgrid 中的页数?我正在计算服务器端代码中页面的 nb 并将其发送回前端代码,谢谢。
    • @JadChahine:不客气!在服务器端分页的情况下,您应该从服务器响应返回,其中包含:总页数 (total)、总记录/行数 (records) 和当前页数 (@987654330 @)。参见here 服务器响应的描述。
    • 请再问一个问题,当我从服务器端检索第一页时,第一页正常加载,但我无法点击 jqgrid 中的下一步按钮,它是只读的,我该如何告诉 jqgrid 我有更多的页面要加载?所以我要多次点击next按钮,直到没有记录为止,谢谢。
    • @JadChahine:如果 jqGrid 无法从服务器响应中读取total 信息,则通常会有这种行为。 jqGrid 假设它是唯一的页面,并且寻呼机的 Next/Previous 按钮将被停用。顺便说一句,如果总行数不是很多(少于 1000 或 10000),建议使用loadonce: true 并从服务器一次返回所有数据。它简化了服务器代码。试试the demo,页面有 13 列,20 行,总共 4000 行。
    猜你喜欢
    • 2013-07-08
    • 2023-03-10
    • 2013-11-11
    • 1970-01-01
    • 2016-05-04
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多