6

我需要传递userDatajqgrid,但找不到任何有关如何执行此操作的示例。这是我的尝试:

从服务器发送:

{ total: 25,
  page: currentpage,
  userData: {foo: 'bar'},
  rows: myRows }

在 jqgrid 中:

var data = jQuery("#grid").getGridParam('userData');

如何userData从 jqgrid 发送和读取它?

编辑:我知道我userData正在发送,因为我可以在Fiddler中看到它。我想我只是坚持如何在客户端阅读它。

4

2 回答 2

17

一般来说,使用userData非常简单。jqGrid 支持从服务器发送将与 jqGrid 数据一起保存的任何附加数据。因此,如果 jqGrid 解析从服务器返回的数据,那么它只会查找userdata(而不是userData!!!)并且保存在内部参数userData中。

{ "total":25,
  "page":1
  "records":107,
  "userdata": {"foo": "bar"},
  "rows": [...] }

请注意:输入数据中的默认属性必须是userdata不是 userData像您当前拥有的那样。您可以覆盖输入属性的默认名称,jsonReader: {userdata: "userData"}或者jsonReader: {userdata: "myData"}如果您使用userDatamyData作为附加数据的属性名称。

标准用法之一userData是在 jqGrid中显示页脚。您可以将这些数据用于您的任何其他建议。在另一个答案中,它显示了如何在userData从服务器加载数据后直接选择一些行/行。

如果你使用loadonce:true参数,使用userData会有点棘手,因为在第一次加载后,参数中的数据userData将被删除,所以你必须保存在外部对象中。

当然,您userData只能jQuery("#grid").getGridParam('userData')在加载数据后才能访问。因此,您应该在loadComplete事件句柄内或之后执行此操作。通过loadComplete事件句柄内部的方式,您可以访问通过loadComplete事件的参数从服务器发送给您的所有数据。因此,您可以读取任何其他附加数据并将其保存在某处。data

于 2010-10-03T11:14:21.710 回答
1

jqGrid 默认接受这种格式的 JSON。

{"rows":
    [{"foo":"bar"}]
}

并设置 jqgrid 选项,您将执行以下操作:

$("#cashflow-sheet").jqGrid({
    url:'bbc-json.html',
    datatype: "json",
        ...
于 2010-10-03T06:31:42.483 回答