2013-03-04 101 views
3

我是jqGrid的新手,我用本地數據構建了一個jqGrid treeGrid,一切正常。 但現在我試圖用遠程JSON數據做同樣的事情,我無法獲取treeGrid顯示我的數據。 這裏的TreeGrid的conf:jqgrid從服務器加載json數據到treegrid不顯示數據

$("#"+subgrid_table_id).jqGrid({ 
    url:"sg511e.php?id="+row_id+"&btr="+btr, 
    datatype:"json", 
    mType:'POST', 
    loadui: "disable", 
    colNames:['id','Prestations'], 
    colModel:[ 
     {name:'id',index:'id',width:100,hidden:true}, 
     {name:'name',index:'name',width:785,sortable:false} 
    ], 
    pager: pager_id, 
    sortname: 'id', 
    sortorder: "asc", 
    hiddengrid:true, 
    gridview: true, 
    treeGrid:true, 
    treeGridModel: "adjacency", 
    treedatatype: 'json', 
    ExpandColumn: 'name', 
    jsonReader: { 
     repeatitems: false, 
     root: "rows" 
    }, 

和JSON DATAS:

{ 
    "page": 1, 
    "total": 1, 
    "records": 1, 
    "rows": [ 
     { 
      "cell": { 
       "id": "1", 
       "name": "ECHANGEUR", 
       "level": "0", 
       "parent": "", 
       "isLeaf": true, 
       "expanded": false, 
       "loaded": true 
      } 
     }, 
     { 
      "cell": { 
       "id": "1_1", 
       "name": "Intervention Aller sur Site", 
       "level": "1", 
       "parent": "1", 
       "isLeaf": true, 
       "expanded": false, 
       "loaded": true 
      } 
     }, 
     { 
      "cell": { 
       "id": "1_1_1", 
       "name": "Date et heure d'arrivée sur le site", 
       "level": "2", 
       "parent": "1_1", 
       "isLeaf": false, 
       "expanded": true, 
       "loaded": true 
      } 
     }, 
     { 
      "cell": { 
       "id": "1_1_2", 
       "name": "Consignation de l'échangeur", 
       "level": "2", 
       "parent": "1_1", 
       "isLeaf": false, 
       "expanded": true, 
       "loaded": true 
      } 
     } 
    ] 
} 

我看不出有什麼我錯了,所以我希望你能帶來一些幫助,並解釋我的錯誤。 提前感謝 JiheL

回答

5

你首先應該解決的JSON數據:

  • 更換"parent": """parent": "null"根元素
  • 你應該顛倒isLeaf屬性的值:改變所有true值更改爲false並將所有false值更改爲true
  • 您應該從所有項目中刪除"cell"部分s
  • "records": 1不對應4項數據。我想正確的值應該是"records": 4,但最好的辦法是從網格的選項列表中刪除pager。在任何pagetotalrecords的情況下設置將不重要。

您可以更簡化數據並從JSON數據中刪除rows部分。在這種情況下,我們必須將jsonReaderroot財產更改爲root: function (obj) { return obj; }。其結果是,你可以用下面簡單的JSON數據:

[ 
    { 
     "id": "1", 
     "name": "ECHANGEUR", 
     "level": "0", 
     "parent": "null", 
     "isLeaf": false, 
     "expanded": false, 
     "loaded": true 
    }, 
    { 
     "id": "1_1", 
     "name": "Intervention Aller sur Site", 
     "level": "1", 
     "parent": "1", 
     "isLeaf": false, 
     "expanded": false, 
     "loaded": true 
    }, 
    { 
     "id": "1_1_1", 
     "name": "Date et heure d'arrivée sur le site", 
     "level": "2", 
     "parent": "1_1", 
     "isLeaf": true, 
     "expanded": true, 
     "loaded": true 
    }, 
    { 
     "id": "1_1_2", 
     "name": "Consignation de l'échangeur", 
     "level": "2", 
     "parent": "1_1", 
     "isLeaf": true, 
     "expanded": true, 
     "loaded": true 
    } 
] 

The demo證明的變化的結果。之後延伸電網看起來像下面的圖片

enter image description here

我在演示中使用的代碼是:

$("#grid").jqGrid({ 
    url: "user2132268.json", 
    datatype: "json", 
    colNames: [ 'id', 'Prestations'], 
    colModel: [ 
     {name: 'id', width: 100, key: true, hidden: true}, 
     {name: 'name', width: 785, sortable: false} 
    ], 
    sortname: 'id', 
    sortorder: "asc", 
    hiddengrid: true, 
    gridview: true, 
    treeGrid: true, 
    treeGridModel: "adjacency", 
    ExpandColumn: 'name', 
    ExpandColClick: true, 
    jsonReader: { repeatitems: false, root: function (obj) { return obj; } }, 
    height: "auto" 
}); 
+0

非常感謝你的幫助,那岩石精!遠遠要成爲jqGrid的專家,但我正在努力! JiheL – JiheL 2013-03-05 08:02:12

+0

@ user2132268:不客氣!如果問題現在已經解決,您可以將答案標記爲[「accepted」](http://meta.stackexchange.com/a/5235/147495)。 – Oleg 2013-03-05 08:09:06