Вы можете определить переменную, которая будет хранить последнее состояние ответа JSON, возвращенного с сервера:
var serverData;
$('#list').jqGrid({
datatype: 'json',
// ... other parameters
loadComplete: function (data) {
serverData = data; // or serverData = data.rows
// ...
},
onSelectRow: function (id) {
if (serverData) {
// here you can access serverData, but you need
// here probably find the item in the serverData
// which corresponds the id
}
}
});
Если у вас есть данные JSON, например, из формы
{
"total": "xxx",
"page": "yyy",
"records": "zzz",
"rows" : [
{"id" :"1", "cell": ["cell11", "cell12", "cell13"]},
{"id" :"2", "cell": ["cell21", "cell22", "cell23"]},
...
]
}
затем вы можете сохранить в serverData
данные не напрямую.Может быть интересно сохранить только cell
часть и сохранить ее как значение serverData[id]
:
var serverData = [];
$('#list').jqGrid({
datatype: 'json',
// ... other parameters
loadComplete: function (data) {
var i, rows = data.rows, l = rows.length, item;
for (i = 0; i < l; i++) {
item = rows[i];
serverData[item.id] = item.cell;
}
// ...
},
onSelectRow: function (id) {
var item = serverData[id]; // the part of data which we need
}
});
Если вы используете настройку repeatitems: false
в jsonReader
, то вы можете сохранить вserverData
только часть элементов (выбранных свойств), которые представляли собой строку данных сервера.
В любом случае вам следует сохранить часть информации из параметра data
параметра loadComplete
в некоторыхпеременная определена вне loadComplete
.