JQGrid Page#Not Incrementing

时间:2015-02-04 22:17:19

标签: asp.net jqgrid

我正在使用SQL Server端分页来检索JQGrid的数据。有大约15k行被返回,所以由于JSON字符串大小的限制,我一次只抓取一个页面。 SQL查询有效,但传递给我的C#Web服务的页码从不增加到2以上。它在第1页和第1页上完美运行。 2.据推测,网格需要结果集中的记录总数以及计算的总页数。很容易理解,但如何在网格中设置此信息?这会解决页码不会超过2的问题吗?

这是我网格的代码。 UpdateShortCalls有点冗长,因为我从我的另一个应用程序“借用”它,它有多个case语句来处理添加,编辑,删除。不包括C#,因为我知道它可以工作并返回数据。只要它得到正确的页面#传递。

function ShowStatuses() {
jQuery("#grdECHShortCalls").jqGrid('GridUnload');
jQuery("#grdECHShortCalls").jqGrid({
    jsonReader: {
        repeatitems: false,
        root: 'Table',
        page: function (obj) { return 1; },
        total: function (obj) { return 2; },
        records: function (obj) { return obj.ItemCount; },
        id: "0"
    },
    pgbuttons: true,
    recordtext: "Total: {2}",
    emptyrecords: "No records found",
    loadtext: "Loading...",
    pgtext: "",
    datatype: function () {
        UpdateShortCalls("getShortCalls");
    },
    ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
    colNames: ['Location', 'Supervisor', 'Agent', 'ANSLOGIN', 'CallDate', 'CallId', 'ACD', 'TALKTIME' ],
    colModel: [
                { name: 'Location', index: 'Location' },
                { name: 'Supervisor', index: 'Supervisor', width: 150 },
                { name: 'Agent', index: 'Agent', width: 100 },
                { name: 'ANSLOGIN', index: 'ANSLOGIN', width: 100 },
                { name: 'CallDate', index: 'CallDate', width: 150 },
                { name: 'CallId', index: 'callid', width: 100 },
                { name: 'ACD', index: 'ACD', width: 120 },
                { name: 'TALKTIME', index: 'TALKTIME', width: 100 }
    ],
    rowNum: 100,
    height: "100%",
    autoWidth: true,
    rowList: [],
    pager: $('#shortCallPager'),
    toppager: true,
    sortname: 'Location',
    viewrecords: true,
    sortorder: 'asc',
    gridview: true,
    grouping: true,
    groupingView: {
        groupField: ['Location', 'Supervisor'],
        groupDataSorted: true,
        hideFirstGroupCol: true,
        groupCollapse: false,
        plusicon : "ui-icon-plus",
        minusicon : "ui-icon-minus"
    }
});

jQuery("#grdECHShortCalls").jqGrid({ pgbuttons: true, recordtext: '' });
jQuery('#grdECHShortCalls').jqGrid('gridResize');
}

function UpdateShortCalls(m, args) {
var data = "";
var method = "";
var func = "";
switch (m) {
    case "getShortCalls":
        method = "GetShortCallDetails";
        var postdata = $("#grdECHShortCalls").jqGrid('getGridParam', 'postData');
        data = '{ sortidx: "' + postdata.sidx +
                '", sortorder: "' + postdata.sord +
                '", page: "' + postdata.page +
                '", rows: "' + postdata.rows +
                '", issearch: "' + postdata._search +
                '", searchfield: "' + postdata.searchField +
                '", searchval: "' + postdata.searchString +
                '", searchops: "' + postdata.searchOper + '"}';
        var args = [];
        args.push(postdata._search);
        func = "getShortCalls";
        break;
    default:
        return;
}
utl.ajax(srvurl + method, data, func, args);

}

2 个答案:

答案 0 :(得分:0)

你可以发布服务器端吗?在返回数据时,如果使用delault jgqrid 映射,则应该包含字段total,其中包含总行数integer

此外,@ Oleg的answer可以帮助您解决问题。

答案 1 :(得分:0)

我明白了!对于其他有类似问题的人......我从我的SQL查询中返回第二个表,其中包含当前页码,总页数和总记录数。将其作为JSON字符串中的另一个表包含在内。修改了我创建JQGrid的JavaScript函数 - 特别是jsonReader:部分来显示这些值。现在,网格知道有多少记录正在按预期进行分页。终于到了#2的页面!

function ShowStatuses() {
    jQuery("#grdECHShortCalls").jqGrid('GridUnload');
    jQuery("#grdECHShortCalls").jqGrid({
        jsonReader: {
            repeatitems: false,
            root: 'Table',
            total: function (d) { return d.Table1[0].TotalPgs; },
            records: function (d) { return d.Table1[0].Cnt; },
            page: function (d) { return d.Table1[0].Page; },
            id: "0"
        },
        pgbuttons: true,
        emptyrecords: "No records found",
        loadtext: "Loading...",
        datatype: function () {
            UpdateShortCalls("getShortCalls");
        },
        ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
        colNames: ['Location', 'Supervisor', 'Agent', 'ANSLOGIN', 'CallDate', 'CallId', 'ACD', 'TALKTIME' ],
        colModel: [
                { name: 'Location', index: 'Location' },
                { name: 'Supervisor', index: 'Supervisor', width: 150 },
                { name: 'Agent', index: 'Agent', width: 100 },
                { name: 'ANSLOGIN', index: 'ANSLOGIN', width: 100 },
                { name: 'CallDate', index: 'CallDate', width: 150 },
                { name: 'CallId', index: 'callid', width: 100 },
                { name: 'ACD', index: 'ACD', width: 120 },
                { name: 'TALKTIME', index: 'TALKTIME', width: 100 }
        ],
        rowNum: 100,
        height: "100%",
        autoWidth: true,
        rowList: [],
        pager: $('#shortCallPager'),
        toppager: true,
        sortname: 'Location',
        viewrecords: true,
        sortorder: 'asc',
        gridview: true,
        grouping: true,
        groupingView: {
            groupField: ['Location', 'Supervisor'],
            groupDataSorted: true,
            hideFirstGroupCol: true,
            groupCollapse: false,
            plusicon : "ui-icon-plus",
            minusicon : "ui-icon-minus"
        }
    });

    //jQuery("#grdECHShortCalls").jqGrid({ pgbuttons: true, recordtext: '' });
    jQuery('#grdECHShortCalls').jqGrid('gridResize');
}