0

JQGrid のページネーションに関するヘルプが必要です。以下はコードの一部です。

ERR LINE : 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はあなたがthを使用することを期待していると私は信じています

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 メソッド

正直に言うと、両方の方法が問題ないことはかなり肯定的でしたが、エラーメッセージから判断すると、 $('#gridData').getGridParam('page'); $('#gridData') にはメソッド getGridParam がないため、エラーがスローされているため、別の方法を試します

于 2013-09-05T05:00:36.357 に答える