Дополню. При datatype='local' грид полагает, что ему передана не отдельная группа записей, а все данные. Это приводит к следующему эффекту: к примеру я получаю с сервера (чтобы ускорить загрузку) 20 записей и информацию о том, что их 10000. Далее дополняю их пустыми объектами:
...
success: function (data) {
var total = data[total];
var rows = data['rows']
while (rows.length < total) {
rows[rows.length] = {}
}
В таком виде мои 20 записей будут отображены на первой странице. Я переопределил обработчики кнопок пролистывания, чтобы они получали новую партию данных, но у меня упорно отображались записи в таблице undefined на всех страницах кроме первой. В итоге я пришел к выводу, что нужно смещать записи в массиве прежде, чем отдать его в jqgrid
var offset = 0;
if (typeof void null != typeof data['rowNum'] && data['rowNum'] != null &&
typeof void null != typeof data['page'] && data['page'] != null) {
offset = (data['page'] - 1) * data['rowNum'];
}
if (!isNaN(offset)) {
offset = 0;
}
var rdata = [];
while (rdata.length < offset) {
rdata[rdata.length] = {};
}
for (var i = 0; i < data['rows'].length; i++) {
rdata[rdata.length] = data['rows'][i];
}
while (rdata.length < data['total']) {
rdata[rdata.length] = {};
}