我有一个动态创建的带有自定义格式化程序的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?
在数据中,patient_id
的值始终与id
相同。我想可以有不同的(如果patient_id
等于id
您已经可以看到自定义格式化程序中的信息)。您至少可以通过三种方式实现所需的内容:
- 您添加一个隐藏列(具有属性
hidden:true
),它将表示patient_id
。您将有关patient_id
的信息移动到"cell"
数组内的 JSON 输入中。 - 您可以将有关
id
和patient_id
之间的映射的信息作为userdata
的一部分放置,您将包含在 JSON 中(有关详细信息,请参阅此处)。 - 您可以使用
loadComplete
事件句柄data
参数。data
参数将包含从服务器发布的完整 JSON 数据。您可以从data
获取所需的信息并将其保存在某个地方。然后,您从自定义格式化程序获取保存的信息。
关于 JSON 数据的另一个小评论。目前您使用的项目如下
{
"cell": [
"637",
"Alice",
"Test",
"01/01/1980",
""
],
"id": "637",
}
(如果我们忘记patient_id
)。这意味着您发送两次id
信息:一次作为列的一部分,第二次作为网格的第一列。如果要在第一个网格列的定义中包含key:true
设置并添加jsonReader: {cell:""}
则可以使 JSON 数据更紧凑,其中行项将采用数组形式
[
"637",
"Alice",
"Test",
"01/01/1980",
""
]
额外数据添加隐藏列。