我从使用loadComplete
完全访问权限的服务器获得JSON响应。是否可以使用
onSelectRow
?loadComplete
之外定义的任何其他自定义函数?答案 0 :(得分:1)
您可以定义一个变量,该变量将保存从服务器返回的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
中保存代表服务器数据行的项目(所选属性)部分。< / p>
在任何情况下,您都应该将data
loadComplete
loadComplete
参数中的部分信息保存在<{em> {{1}}之外的某些变量中。