jqgrid - 我可以使用onSelectRow访问服务器响应吗?

时间:2011-12-06 19:20:47

标签: json jqgrid

我从使用loadComplete完全访问权限的服务器获得JSON响应。是否可以使用

访问JSON响应
  1. onSelectRow
  2. loadComplete之外定义的任何其他自定义函数?

1 个答案:

答案 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}}之外的某些变量中。