需要有关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
});
答案 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,所以我会尝试其他方式