У меня проблема с подкачкой jqGrid.Я хочу создать собственную группу и добавить в нее данные строки.Хотя я добавляю данные в сетку на первой странице, это нормально, но если добавить новую группу на следующей странице, я могу видеть исключение в Firebug и на пустой странице.Я использую метод addJSONData.Проблема в том, что addJSONData перебирает все группы в Grid и ищет их длину:
str += "<tr id=\""+hid+"\" role=\"row\" class= \"ui-widget-content jqgroup ui-row-"+$t.p.direction+"\"><td colspan=\""+colspans+"\">"+icon+$.jgrid.format(grp.groupText[0], gv, grdata[n].length)+"</td></tr>";
Но если у меня есть одна группа на предыдущей странице и я только отправляю данные второй группы с ajax и вызываю addJSONData, то выдается исключение: длина не определена.Как я могу решить это?
ОБНОВЛЕНИЕ: Вот мой код:
function addToGrid(group, ids){
var rowNum = jQuery(myGrid).jqGrid('getGridParam', 'rowNum');
data = jQuery.ajax({
url: myUrl,
data: {'group': group, 'rowNum': rowNum, 'ids': ids},
dataType: 'json',
complete: function(jsondata,stat){
if(stat=="success") {
var targetGrid = jQuery(myGrid);
var myjsongrid = eval('('+jsondata.responseText+')');
var rows = myjsongrid.rows;
if(rows.length != 0){
targetGrid[0].addJSONData(myjsongrid);
}
}
}
});
}
И таблица:
$(myGrid).jqGrid({
url: myUrlTable,
datatype: 'json',
postData: {},
mtype: 'GET',
jsonReader: { repeatitems : false},
colNames: ['Id', 'Group', 'Bytes'],
colModel: [{name:'id', index: 'id', hidden: true},
{name:'group', index: 'group', width: 100},
{name:'bytes', index: 'bytes', width: 60, classes:'gc column-bytes', sortable: false, sorttype:'int', formatter:'integer'}
],
grouping: true,
groupingView: {
groupField : ['group'],
groupText : ['Group: ({1} items)'],
groupOrder: 'asc',
groupDataSorted : true
},
sortable: true,
toppager: true,
hoverrows: true,
altrows: false,
});
Тестовые данные с сервера:
{"total":1,"page":1,"records":1,"rows":[{"group":"abc", "bytes":229447,"id":"7124"}]}
Другие записи аналогичны.Я добавил 20 записей, а затем добавил следующие 5 на другой странице с группой BBB.Метод addToGrid вызывается из другой сетки с идентификаторами и введенным именем группы в диалог ввода.Затем я передаю его на сервер, и сервер возвращает действительные данные в сетку фулфилла.Сервер возвращает только данные для последней страницы в моем случае 5 строк.
Ответ сервера:
{"total":2,"page":2,"records":5,"rows":[{"group":"bbb", "bytes":229447,"id":"7155"},
{"group":"bbb", "bytes":229447,"id":"7156"},
{"group":"bbb", "bytes":229447,"id":"7157"},
{"group":"bbb", "bytes":229447,"id":"7158"},
{"group":"bbb", "bytes":229447,"id":"7159"}
]
}