【问题标题】:jqgrid loading json datas from server into treegrid doesn't display datasjqgrid将json数据从服务器加载到treegrid不显示数据
【发布时间】:2013-02-18 17:45:51
【问题描述】:

我是 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
            }
        }
    ]
}

我看不出我有什么问题,所以我希望你能提供一些帮助并解释我的错误。 提前谢谢了 吉赫L

【问题讨论】:

    标签: json jqgrid treegrid


    【解决方案1】:

    首先你应该修复 JSON 数据:

    • 将根元素中的"parent": "" 替换为"parent": "null"
    • 您应该反转isLeaf 属性的值:将所有true 值更改为false,并将所有false 值更改为true
    • 您应该从所有项目中删除 "cell" 部分
    • "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 演示更改的结果。扩展后的网格如下图所示

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

    $("#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"
    });
    

    【讨论】:

    • 非常感谢您的帮助,这很好!远成为 jqGrid 专家,但我正在努力!吉赫L
    • @user2132268:不客气!如果问题已经解决,您可以将答案标记为"accepted"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 2018-07-24
    • 2013-10-01
    • 1970-01-01
    • 2010-11-21
    • 2014-01-21
    相关资源
    最近更新 更多