如何在jqgrid中读取userData?

时间:2010-10-03 06:18:01

标签: jquery json jqgrid user-data

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

从服务器发送:

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

和jqgrid:

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

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

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

2 个答案:

答案 0 :(得分:16)

一般来说,userData的使用非常简单。 jqGrid支持从服务器发送任何其他数据,这些数据将与jqGrid数据一起保存。因此,如果jqGrid解析从服务器返回的数据,那么它只查找userdata代表userData !!!)并保存在内部参数{{1}中}。

userData

注意:输入数据中的默认属性必须是{ "total":25, "page":1 "records":107, "userdata": {"foo": "bar"}, "rows": [...] } NOT userdata,就像您目前一样。如果您使用userDatajsonReader: {userdata: "userData"}作为您additional data的媒体资源名称,则可以覆盖输入媒体资源jsonReader: {userdata: "myData"}userData的默认名称。

myData的标准用法之一是jqGrid中的displaying of the footer。您可以将数据用于您的其他建议。在another answer中显示了如何使用userData在从服务器加载数据后直接选择某些行/行。

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

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

答案 1 :(得分:1)

jqGrid默认接受此格式的JSON。

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

并设置jqgrid选项,你会做这样的事情:

$("#cashflow-sheet").jqGrid({
    url:'bbc-json.html',
    datatype: "json",
        ...