开发者

Get custom JQGrid JSON data in gridComplete method

Here is a typical JQGrid JSON response:

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

Along with 开发者_运维技巧this, I want to send additional custom data. For example, I'd like to send the database time of the last search so that I can lazy-reload my grid whenever changes have occurred since then. Here is how I would like to send that data:

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

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

The problem is that JQGrid swallows up the JSON response rather than forwarding it to the gridComplete method. In other words, params is undefined in the following function:

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

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

   globalGridVariables.lastSearchTime = JSONResponse.nameValues.lastSearchTime;

   //Rest of grid complete method
   ..
}

Please let me know if there is a way to get access to the JSON response object in the gridComplete method, or if there is another supported way to add custom data to a JSON response.

Thanks much!

Note: I don't want to send this as a hidden column, because that would be inefficient.


You can use loadComplete instead of gridComplete. The loadComplete event has one parameter (for example data) which represent the full data from the server response inclusive all of your extensions.

Alternative you can rename the nameValues to userdata and use $('#list').jqGrid('getGridParam', 'userData') to get the value. See here for more information.

Moreover you can consider to use more HTTP caching (see here and here) for the aims which you described in your question.


You can use beforeProcessing that has the deserialized response and gets active before gridComplete and loadComplete.

For example:

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

And just to make it more clearer from the documentation:

Below is the execution order of the events when a ajax request is made

  1. beforeRequest
  2. loadBeforeSend
  3. serializeGridData
  4. loadError
  5. beforeProcessing
  6. gridComplete
  7. loadComplete
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜