2011-11-28 57 views
1

我一直在嘗試在jqgrid中實現一個簡單的子網格以顯示發票的行項目。我終於得到了子網格,但每個子網格都顯示了相同的行項目列表,這實際上是數據集中的所有條目。jqgrid子網每個顯示json數據中的所有項目

我不太清楚如何調試這一點,但這裏是我的一些潛在ideas-

  • 的是它與JSON店的方式(不)響應GET查詢的問題嗎?

  • 是不是因爲我無處可以定義子網格數據中的哪個字段是「foriegn key」可以這麼說。

  • 我需要的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腳本plicable部分:

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); 

回答

1

我假設URL "/json_url/to_line_items/"下的代碼,請不要使用jqGrid的發送id參數。如果用戶展開子網格,則該行的rowid將用作subGridUrl的附加參數。順便說一下,我不明白你爲什麼使用id其他網格值作爲order_id。目前id=1參數將被附加到subGridUrl以擴大與order_id=10行的情況下。這是你想要的嗎?

+0

我可以在firebug中看到,當我單擊展開時的調用發送主行的id作爲GET請求'?id = value'。在我看來,這隻需要'?order_id = value',但我不知道如何更改參數名稱。在jsonReader下的子網格參數中將'id'更改爲'order_id'似乎沒有幫助。 –

+1

@j_syk:要更改'id'名稱,您應該使用jqGrid參數'prmNames:{subgridid:「order_id」}' – Oleg

+0

確實將GET請求更改爲正確的參數,但數據不是過濾。我以前沒有在我的json商店遇到過這個問題......讓我捅一下 –