JQGrid分页事件,收到错误

时间:2013-09-05 04:42:02

标签: jqgrid jquery-pagination

需要有关JQGrid分页的帮助。 下面是一段代码,

ERR LINE:var currentPage = $('#gridData').getGridParam('page');
错误MSG:0x800a01b6 - microsoft jscript运行时错误对象不支持此属性或方法。

我也检查过Jquery引用。一切都很好。不知道哪里出错了:(

$("#gridData").jqGrid({
    data: selectedTblData.Table.Rows,
    datatype: "local",
    toppager: true,
    height: "100%",
    width: (selectedTblData.Table.Width < 1000) ? 985 : "100%",
    altRows: true,
    altclass: "custom-alt-row",
    colNames: selectedTblData.Table.colNames,
    colModel: selectedTblData.Table.colModel,
    multiselect: false,
    rowNum: 25,
    rowList: [15, 25, 50, 75, 100],
    mtype: 'GET',
    pager: '#pager',
    sortname: selectedTblData.Table.colNames[0],
    sortorder: "asc",
    viewrecords: true,
    shrinkToFit: (selectedTblData.Table.Width < 1000),
    caption: tableName,
    secureUri: false,
    contentType: "application/json; charset=utf-8",
    loadonce: true,
    //BS Page start
    onPaging: function (pgButton) {
        //debugger;


        var pagerId = this.p.pager.substr(1); // get paper id like "pager"
        var currentPage = $('#gridData').getGridParam('page'); //get current  page
        var lastPage = $("#gridData").getGridParam("lastpage"); //get last page 

        if (currentPage - 1 == lastPage - 1)
            $("#gridData").setGridParam({ page: lastPage }).trigger("reloadGrid"); // set the requested page to the last page value – then reload

        var currentRecordCount = $("#gridData").getGridParam("reccount");  //get the record count
        var recordsPerPage = $("#gridData").getGridParam("rowNum");  // get the records per page
        var newValue = 0;  // new value
        if (pgButton === "user") {
            newValue = $(".ui-pg-input").val(); 
        }
        else {

            if (pgButton.indexOf("next") >= 0)
                newValue = ++currentPage;
            else if (pgButton.indexOf("prev") >= 0)
                newValue = --currentPage;
            else if (pgButton.indexOf("last") >= 0)
                newValue = $("#gridId").getGridParam('lastpage');
            else if (pgButton.indexOf("first") >= 0)
                newValue = 1;
        }
        alert(newValue);
        $("#gridData").setGridParam({ page: newValue }).trigger("reloadGrid");  // set the requested page to the last page value – then reload
        currentRecordCount = $("#gridData").getGridParam("reccount");  // read the current page records
        alert('RecordCount: ' + currentRecordCount + ' RecordsPerPage: ' + recordsPerPage);

        if (currentRecordCount < recordsPerPage) {
            startRange = 1;
            endRange += endRange;

            jQuery("#gridData").jqGrid("setGridParam", { datatype: "json", data: "{TableName :'" + tableName + "'}", url: "TablesCoolView.aspx/GetTableData" }).trigger("reloadGrid");
        }
    }
    //BS page end
});

1 个答案:

答案 0 :(得分:1)

与调用jqGrid方法的方式不一致。如果我没记错的话,早期版本的jqGrid使用了

jQuery("#grid_id").jqGridMethod( parameter1,...parameterN );

调用方法的方法,但我相信新API希望你使用

jQuery("#grid_id").jqGrid('method', parameter1,...parameterN );

所以在你的具体情况下,你在最后一行调用setGridParam的方式是最好的方法

jQuery("#gridData").jqGrid("setGridParam", { datatype: "json", data: ...

所以你的代码就像

$("#gridId").getGridParam('lastpage');

在新API中无效。 (即应该

jQuery("#gridData").jqGrid("getGridParam", 'lastpage');

现在这个更改是关于版本3.6,所以你使用的是什么版本,因为你似乎在混合方法

ref jqGrid methods

虽然说实话,我合理肯定两种方法都没问题,但是根据你的错误信息判断,$('#gridData')。getGridParam('page');抛出错误是因为$('#gridData')没有方法getGridParam,所以我会尝试其他方式