jqGrid访问额外信息

时间:2011-05-11 18:28:03

标签: json jqgrid

我有一个带有自定义格式化程序的动态创建的jqGrid。我需要能够访问格式化程序中不在网格列中的某些信息。我的问题是rowObject似乎只包含列中的信息而没有其他内容,即使JSON数据有额外的属性。

我的JSON看起来像:

{"rows":
  [
    {"cell":["637","Alice","Test","01\/01\/1980",""],"id":"637","patient_id":"637"},
    ...
    {"cell":["635","Alice","Test","01\/01\/1980",""],"id":"635","patient_id":"635"},
  ],
  "form_id":"3",
  "records":"35",
  "total":2,
  "goto_patient_sidebar":"1",
  "totalRecords":"35",
  "dynamicFilters":"",
  "listName":"Patients",
  "page":1,
  "recordsReturned":25,
  "columns":
  [
    {"id":"75","field_id":"2","zmr_list_id":"13","alias":"Last Name",
    "sortorder":"0","reference_field_id":"90","show_date":"0","show_time":"0"},

    {"id":"76","field_id":"1","zmr_list_id":"13","alias":"First Name",
    "sortorder":"1","reference_field_id":"90","show_date":"0","show_time":"0"},

    {"id":"77","field_id":"25","zmr_list_id":"13","alias":"DOB",
    "sortorder":"2","reference_field_id":"90","show_date":"1","show_time":"0"},

    {"id":"78","field_id":"47","zmr_list_id":"13","alias":"Phone Number",
    "sortorder":"3","reference_field_id":"90","show_date":"0","show_time":"0"}
  ]

}

对于每一行,我需要从JSON访问patient_id。每行的列数据包含在每行的“单元格”中。 rowObject似乎只包含JSON的每个单元属性中的信息。如何在不在列中呈现的情况下访问patient_id?

2 个答案:

答案 0 :(得分:2)

在数据中,patient_id的值始终与id相同。我想可以有不同的(如果patient_id等于id,您可以看到自定义格式化程序中的信息)。您可以通过至少三种方式实现所需:

  1. 您添加了一个隐藏列(具有属性hidden:true),代表patient_id。您可以在patient_id数组中的JSON输入中移动有关"cell"的信息。
  2. 您可以将idpatient_id之间的映射信息作为userdata的一部分放置在JSON中(有关详细信息,请参阅here)。
  3. 您使用data事件句柄的loadComplete参数。 data参数将包含从服务器发布的完整 JSON数据。您可以从data获取所需信息并将其保存在某处。然后,您将从自定义格式化程序中获取已保存的信息。
  4. 关于您的JSON数据的另一个小评论。目前您使用

    之类的项目
    {
        "cell": [
            "637",
            "Alice",
            "Test",
            "01\/01\/1980",
            ""
        ],
        "id": "637",
    }
    

    (如果我们忘记了patient_id)。这意味着您发送两次id信息:一个作为列的一部分,第二次作为网格的第一列。如果要在第一个网格列的定义中包含key:true设置并添加jsonReader: {cell:""},则可以使JSON数据更紧凑,其中行项目将采用数组形式

    [
        "637",
        "Alice",
        "Test",
        "01\/01\/1980",
        ""
    ]
    

答案 1 :(得分:0)

为额外数据添加隐藏列。