2011-05-11 134 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

爲額外的數據添加一個隱藏列。