【问题标题】:Get custom JQGrid JSON data in gridComplete method在 gridComplete 方法中获取自定义 JQGrid JSON 数据
【发布时间】:2011-09-01 15:05:42
【问题描述】:

这是一个典型的 JQGrid JSON 响应:

{
  "page":1,
  "records":537,
  "rows":[..],
  "rowCount":10,
  "total":54
}

除此之外,我还想发送额外的自定义数据。例如,我想发送上次搜索的数据库时间,以便我可以在此后发生更改时延迟重新加载我的网格。以下是我想发送该数据的方式:

{
  //Custom name-value pairs:
  "nameValues":{"lastSearchTime":"2011/09/01:14:14:56"},

  //Normal JSON data:
  "page":1,
  "records":537,
  "rows":[..],
  "rowCount":10,
  "total":54
}

问题在于 JQGrid 吞噬了 JSON 响应,而不是将其转发给 gridComplete 方法。换句话说,params 在以下函数中是未定义的:

function myGridComplete (params){
   //params is undefined!

   var JSONResponse = ?;//I need your help here!!!

   globalGridVariables.lastSearchTime = JSONResponse.nameValues.lastSearchTime;

   //Rest of grid complete method
   ..
}

请告诉我是否有一种方法可以在 gridComplete 方法中访问 JSON 响应对象,或者是否有另一种支持的方法可以将自定义数据添加到 JSON 响应中。

非常感谢!

注意:我不想将此作为隐藏列发送,因为那样效率低。

【问题讨论】:

    标签: json jqgrid customization


    【解决方案1】:

    您可以使用loadComplete 代替gridComplete。 loadComplete 事件有一个参数(例如 data),它代表来自服务器响应的完整数据,包括您的所有扩展。

    或者,您可以将 nameValues 重命名为 userdata 并使用 $('#list').jqGrid('getGridParam', 'userData') 获取值。请参阅here 了解更多信息。

    此外,您可以考虑使用更多HTTP caching(请参阅here 和here)来实现您在问题中描述的目标。

    【讨论】:

      【解决方案2】:

      您可以使用具有反序列化响应并在 gridComplete 和 loadComplete 之前激活的beforeProcessing。

      例如:

      beforeProcessing: function (data, status, xhr) {
                                  myArray = data.rows;
                              }
      

      只是为了让文档更清楚:

      下面是ajax请求时事件的执行顺序

      1. 请求前
      2. loadBeforeSend
      3. 序列化网格数据
      4. 加载错误
      5. 处理前
      6. gridComplete
      7. 加载完成

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-20
        • 2015-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多