jqgrid从服务器加载json数据到treegrid不显示数据

时间:2013-03-04 15:22:16

标签: json jqgrid treegrid

我是jqGrid的新手,我用本地数据构建了一个jqGrid treeGrid,一切都很好。 但是现在我正在尝试用远程JSON数据做同样的事情,我无法获得treeGrid显示我的数据。 这是treeGrid conf:

$("#"+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数据:

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

1 个答案:

答案 0 :(得分:5)

首先,您应该修复JSON数据:

  • 将根元素中的"parent": ""替换为"parent": "null"
  • 您应该反转isLeaf属性的值:将所有true值更改为false并将所有false值更改为true
  • 您应该从所有项目中删除"cell"部分
  • "records": 1不对应4项数据。我认为正确的值应为"records": 4,但最好的方法是从网格选项列表中删除pager。在任何page的案例设置中,totalrecords都不重要。

您可以更简化数据并从JSON数据中删除rows部分。在这种情况下,我们必须将root的{​​{1}}属性更改为jsonReader。结果您可以使用以下简单的JSON数据:

root: function (obj) { return obj; }

The demo演示了更改的结果。扩展网格后如下图所示

enter image description here

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

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