2013-03-04 1 views
3

저는 jqGrid와 함께 초보자이고 로컬 데이터로 jqGrid treeGrid를 빌드 했으므로 모두 정상입니다. 하지만 지금 원격 JSON 데이터로 동일한 작업을 수행하려고하는데 treeGrid에서 내 데이터를 표시 할 수 없습니다.jqgrid 서버에서 treegrid로 json 데이터를로드 할 때 데이터가 표시되지 않습니다.

$("#"+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 
      } 
     } 
    ] 
} 

여기 TreeGrid에의 conf입니다. 사전에 많은 감사 JiheL가

당신이 JSON 데이터를 수정해야 모든

답변

5

첫째 :

  • 당신이 isLeaf 속성의 값을 반전 할 루트 요소에 "parent": "null""parent": "" 교체를 모든 true 변경 값을 false으로 변경하고 모두 false 값을 true
  • 으로 변경하면 모든 항목에서 "cell" 부분을 제거해야합니다 s
  • "records": 1은 4 개의 데이터 항목과 일치하지 않습니다. 나는 올바른 값이 "records": 4이어야한다고 생각하지만, 가장 좋은 방법은 격자의 옵션 목록에서 pager을 제거하는 것입니다. page의 경우, total 또는 records은 중요하지 않습니다.

데이터를 더 단순화하고 rows 부분을 JSON 데이터에서 제거 할 수 있습니다. 이 경우 root 속성을 jsonReader으로 변경해야합니다. root: function (obj) { return obj; }으로 변경해야합니다.

[ 
    { 
     "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

는 변화의 결과를 보여줍니다 그 결과 다음과 같은 간단한 JSON 데이터를 사용할 수 있습니다. 그리드를 연장 나는 데모에 사용 된 코드

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와 전문가가 될 수 있지만이 일하고 있어요! JheheL – JiheL

+0

@ user2132268 : 환영합니다! 문제가 해결되면 대답을 [ "수락"] (http://meta.stackexchange.com/a/5235/147495)로 표시 할 수 있습니다. – Oleg