【问题标题】:jqgrid subgrids each show all items from the json datajqgrid 子网格每个都显示来自 json 数据的所有项目
【发布时间】:2011-11-28 16:28:41
【问题描述】:

我一直在尝试在 jqgrid 中实现一个简单的子网格来显示发票的行项目。我终于得到了要填充的子网格,但每个子网格都显示了相同的行项目列表,这实际上是数据集中的所有条目。

我不太确定如何调试它,但这里有一些我的潜在想法-

  • json 存储(不)响应 GET 查询的方式是否存在问题?

  • 是不是因为我没有在任何地方定义子网格数据中的哪个字段可以说是“外键”。

  • 是否需要 subGridUrl 指向仅包含适当数据的 json 数据(不是每个行项目)

订单项的 JSON 示例: order_id 指向订单的id

{
  "total": 1,
  "records": 6,
  "rows": [
    {
      "description": "PART X",
      "order_id": 2,
      "qty": 5,
      ... more fields ...
      "id": 1
    },
    ... more  ...
  ],
  page: 1
}

主要网格项目的 JSON:

{
  "total": 1, 
  "records": 2,
  "rows": [
    {
      "order_no": 2,
      ... more fields ...
      "id": 2
    },
    ... more ...
  ],
  page:1
}

我的 jqqrid 脚本的适用部分:

jQuery("#mygrid").jqGrid({
    ... cosmetic stuff for main grid ...
    url: "/my_json_url/",
    datatype: "json",
    colNames:['Order',...],
    colModel:[
        {name:'order_no', index:'order_no'},
        ...
    ],
    jsonReader: {
        repeatitems:false,
        root: "rows",
        page: "page",
        total: "total",
        records: "records",
        cell: "",
        id: "id",
        subgrid: {root: "rows", cell:"", repeatitems: false}
    },
    prmNames: {subgridid: "order_id"},
    subGrid: true,
    subGridUrl: "/json_url/to_line_items/",
    subGridModel: [{ name : ['qty','description'],
                     width: [100,100] }]
})navGrid(some options);

【问题讨论】:

    标签: json jqgrid subgrid


    【解决方案1】:

    我假设URL"/json_url/to_line_items/"下的代码没有使用jqGrid发送的id参数。如果用户展开子网格,该行的rowid 将用作subGridUrl 的附加参数。顺便说一句,我不明白你为什么使用网格的id 值而不是order_id。目前id=1 参数将附加到subGridUrl 以防使用order_id=10 扩展行。是你想要的吗?

    【讨论】:

    • 我可以在萤火虫中看到,当我单击展开时的调用将主行的 id 作为 GET 请求 ?id=value 发送。在我看来,这只需 ?order_id=value 但我不确定如何更改参数名称。在 jsonReader 下的 subgrid 参数中将 'id' 更改为 'order_id' 似乎没有帮助。
    • @j_syk:要更改 id 名称,您应该使用 jqGrid 参数 prmNames: {subgridid: "order_id"}
    • 确实将 GET 请求更改为正确的参数,但数据未过滤。我之前的 json 商店没有遇到过这个问题……让我随便看看
    • @j_syk:“数据没有过滤”是什么意思?您是否认为您的服务器部分代码忽略order_id 参数并返回每个子网格中显示的相同数据?您还可以验证网格中没有任何 id 重复项。
    • 是的,这正是我的意思。我在子网格数据中只有 2 个结果,没有重复值。但是当order_id=1 返回的json 仍然有两个项目,它们的值是order_id=1 和order_id=2。所以出了点问题,但我认为这是我的 json 而不是 jqgrid 在这一点上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2013-07-30
    • 1970-01-01
    • 2017-03-04
    相关资源
    最近更新 更多