jqGrid SubGrid не заполняется
Я пытаюсь заполнить подсетку данными JSON, не используя subgridurl
(так как это сделает вызовы на страницу для каждой строки развернуть) . но получаю ошибку: "t.rows is undefined"
(в grid.base.js). код как показано ниже: версии используемых модулей:
- JQuery-1.6.2.js
- jqGrid 3.3.2
Заранее спасибо.
jQuery(gridID).jqGrid({
url: dataURL,
datatype: "json",
colNames: ['ID', 'FirstName', 'LastName', 'Address1', 'Address2', 'City', 'Country'],
colModel: [
{ name: 'id', width: 200, sortable: false },
{ name: 'firstName', width: 200, sortable: false, editable: true, edittype: 'select', editoptions: { value: { 1: '1', 2: '2', 3: '3'}} },
{ name: 'lastName', width: 200, sortable: false, hidden: true },
{ name: 'address1', width: 200, sortable: false, hidden: true },
{ name: 'address1', width: 200, sortable: false, hidden: true },
{ name: 'city', width: 200, sortable: false, hidden: false},
{ name: 'country', width: 200, sortable: false, hidden: false}
],
rowNum: 10,
rowList: [10, 20, 30],
pager: '#pager2',
sortname: 'id',
viewrecords: true,
sortorder: "desc",
caption: "TEST",
height: "400px",
subGrid: true,
subGridRowExpanded: function(subgrid_id, row_id) {
subGridID = subgrid_id;
jQuery("#" + subGridID).html("<div style='margin-left:415px'><table id='" + subGridID + "' class='scroll'><tr><td>Testing</td><td>Testing</td><td>Testing</td><td>Testing</td><td>Testing</td><td>Testing</td></tr></table></div>"); ;
jQuery("#" + subGridID).jqGrid(
{
datatype: function(pdata) { getDataSubGrid(pdata); },
colNames: ['ID', 'FirstName', 'LastName', 'Address1', 'Address2', 'City', 'Country'],,
colModel: [
{ name: 'id', width: 200, sortable: false },
{ name: 'firstName', width: 200, sortable: false, editable: true, edittype: 'select', editoptions: { value: { 1: '1', 2: '2', 3: '3'}} },
{ name: 'lastName', width: 200, sortable: false, hidden: true },
{ name: 'address1', width: 200, sortable: false, hidden: true },
{ name: 'address1', width: 200, sortable: false, hidden: true },
{ name: 'city', width: 200, sortable: false, hidden: false},
{ name: 'country', width: 200, sortable: false, hidden: false}
],
height: 100,
rowNum: 20,
sortorder: "asc",
height: '100%'
});
}
});
jQuery("#mygrid").jqGrid('#mygrid', '#pager2', { edit: false, add: false, del: false });
}
function getDataSubGrid(pData) {
gridId = "#mygrid_t";
$.ajax({
type: 'GET',
contentType: "application/json; charset=utf-8",
url: myURL,//myurl would get json data from web service
data: '{}',
dataType: "json",
success: function(data, textStatus) {
ReceivedClientDataForSubGrid(getMain(data).rows);
},
error: function(data, textStatus) {
alert('An error has occured retrieving data subgrid!');
}
});
}
function ReceivedClientDataForSubGrid(data) {
var thegrid = $("#" + subGridID);
if ($(thegrid).length == 0) alert('NOT EXISTS');
thegrid.clearGridData();
alert(data.length);//this shows 10
for (var i = 0; i < data.length; i++) {
thegrid.addRowData(i + 1, data[i]);
}
}
function getMain(dObj) {
if (dObj.hasOwnProperty('d'))
return dObj.d;
else
return dObj;
}
1 ответ
Ошибка "t.rows is undefined" обычно означает, что вы используете неправильный HTML-фрагмент для сетки. Если бы вы использовали <div>
вместо <table>
например у вас будет ошибка.
Более того, я настоятельно рекомендую вам перейти на текущую версию jqGrid 4.1.2. Использование jqGrid 3.3.2 сегодня особенно вместе с относительно новой версией 1.6.2 jQuery может привести к проблемам. Это похоже на попытки использовать 30-летний бензин в новом автомоторе. Вы можете получить серьезные проблемы.