【问题标题】:How to read userData in jqgrid?如何在 jqgrid 中读取 userData?
【发布时间】:2011-04-20 09:56:04
【问题描述】:

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

从服务器发送:

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

在 jqgrid 中:

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

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

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

【问题讨论】:

    标签: jquery json jqgrid user-data


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的帖子。我实际上让 jqgrid 工作正常,可以毫无问题地显示行。我省略了那个代码。我不明白的是如何使用 jqgrid 的userData 功能。这使您可以将一组用户数据从服务器发送到网格。
    【解决方案2】:

    通常userData 的用法非常简单。 jqGrid 支持从服务器发送任何附加的数据,这些数据将与 jqGrid 数据一起保存。因此,如果 jqGrid 解析从服务器返回的数据,那么它只会查找 userdatanotuserData!!!)并保存在内部参数 userData 中。

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

    注意:输入数据中的默认属性必须是 userdataNOT userData,就像您目前拥有的那样。如果您使用userDatamyData 作为additional data 的属性名称,则可以覆盖输入属性的默认名称jsonReader: {userdata: "userData"}jsonReader: {userdata: "myData"}

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

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

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

    【讨论】:

    • 谢谢。万一以后有人读到这个,总结是当谈到一个 GridParam 时它是userData,否则它是userdata。在loadComplete 事件处理程序中读取userdata。要将postData 设置为userdata,请执行以下操作:loadComplete: function(data){jQuery("#ticketlist").setGridParam({ postData: { foo2: data.userdata.foo} });}
    • @Slack:您也可以在loadComplete 中使用jQuery("#grid").getGridParam('userData'),例如loadComplete: function(){jQuery("#ticketlist").setGridParam({ postData: { foo2: jQuery("#grid").getGridParam('userData').foo} });}。唯一重要的是要了解,在从服务器发送的数据中,必须放置userdata,并且数据将保存在jqGrid的userData参数中。所以它可以通过getGridParam('userData') 访问。但最重要的是,现在您的程序可以运行并且可以使用userdata/userData。 :-)
    • 伙计,我一直在 json 生成器中使用 userData 而不是 userdata,我快疯了,非常感谢! +1
    猜你喜欢
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 2021-11-07
    • 2021-01-21
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多