2011-05-11 108 views
1

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

我的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

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

  1. 您添加一个隐藏的列(具有财产hidden:true),这将代表patient_id。您将"cell"阵列内的JSON输入中的有关patient_id的信息移动。
  2. 您将关于idpatient_id之间映射的信息作为userdata的一部分放入JSON中(有关更多信息,请参阅here)。
  3. 您使用loadComplete事件句柄的参数datadata参数将包含全部从服务器发布的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", 
    "" 
] 
0

为额外的数据添加一个隐藏列。