0

在 JQGrid 分页上需要帮助。下面是一段代码,

错误线:var currentPage = $('#gridData').getGridParam('page');
ERR 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
});
4

1 回答 1

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 版的,所以你使用的是什么版本,因为你似乎在混合方法

参考jqGrid 方法

虽然说实话,我有理由肯定这两种方法都可以,但从你的错误信息来看, $('#gridData').getGridParam('page'); 抛出错误是因为 $('#gridData') 没有方法 getGridParam,所以我会尝试另一种方式

于 2013-09-05T05:00:36.357 回答