2016-09-22 72 views
0

我的服务器返回JSON数据如下:如何将数据加载到的jqGrid的TreeGrid

{ 
    "pageIndex": 1, 
    "pageSize": 100, 
    "pages": 290, 
    "total": 2891, 
    "nodes": [ 
    { 
     "data": { "id": 1, "name": "Node 1", "leaf": false }, 
     "errors": [] 
    }, 
    { 
     "data": { "id": 2, "name": "Node 2", "leaf": true, "parentId": 1 }, 
     "errors": [] 
    } 
    ] 
} 

我想在一个分层树结构来显示这一点,所以我在的TreeGrid模式下配置的jqGrid如下:

$("#tree").jqGrid({ 
    url: "/tree", 
    datatype : "json", 
    colModel : [{ 
    name: "data.id", 
    key: true 
    }, { 
    name: "data.name" 
    }], 
    colNames : [], 
    jsonReader : { 
    page : 1, 
    records : "total", 
    repeatitems : false, 
    root : "nodes", 
    total : 1 
    }, 
    treeGrid : true, 
    treeGridModel : "adjacency", 
    tree_root_level : 1, 
    ExpandColumn : "data.id", 
    ExpandColClick : true, 
    treeReader : { 
    leaf_field : "leaf", 
    parent_id_field : "data.parentId" 
    } 
}); 

这工作正常;但是,列名必须用data前缀指定。有没有办法摆脱列前缀的列名称而不更改从服务器返回的数据?

+0

您能否包含正确的数据和您使用的代码?你写:“这工作正常”,但它不能因为许多语法错误。数据包含语法错误:请参阅'“pageSize”:100'后面的逗号。 (''));'而不是'}});'),空数组'colNames'而不是使用'colNames'和'colModel'的长度相同,不包括'colNames',... – Oleg

回答

0

如果我理解正确的问题,那么你应该解决colModeljsonReadertreeReader以下几点:

colModel : [{ 
    name: "id", 
    key: true 
}, { 
    name: "name" 
}], 
jsonReader : { 
    cell: "data", 
    root : "nodes" 
}, 
treeReader : { 
    parent_id_field: "parentId", 
    leaf_field : "leaf" 
} 

请参见相应的演示:https://jsfiddle.net/OlegKi/ae18ov61/2/。我在数据项目中添加了属性"level": 1,其中描述了叶子。