使用JQuery MiniUI,json数据构建TreeGrid(树图)

index.html直接上代码.

需要引用MiniUI的boot.js

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Tree大数据量:10000</title>
        <script src="scripts/boot.js" type="text/javascript"></script>
        <style type="text/css">
            
        </style>
    </head>
    <body>
        <h1>Tree大数据量:10000</h1>
        <div id="treegrid1" class="mini-treegrid" 
            style="width: 100%; height: 350px;" 
            treeColumn="taskname" idField="UID" 
            parentField="ParentTaskUID" resultAsTree="false"
        >
            <div property="columns">
                <div type="indexcolumn">序号</div>
                <div name="taskname" field="Name" width="200">任务名称
                    <input type="text" property="editor"
                        class="mini-textbox"
                        style="width: 100%;"
                        minHeight="80"
                    />
                    <input type="text" property="filter"
                        class="mini-textbox"
                        style="width: 100%;"
                        minHeight="80"
                    />
                </div>
                <div field="Duration" width="100">工期</div>
                <div field="PercentComplete" width="100">进度</div>
                <div field="Start" width="100" dateFormat="yyyy-MM-dd">开始日期</div>
                <div field="Finish" width="100" dateFormat="yyyy-MM-dd">完成日期</div>
            </div>
        </div>
        <script type="text/javascript">
            
            var dataArr = [{
                "UID": "1",
                "ParentTaskUID": "0",
                "Name": "项目范围规划1",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            },{
                "UID": "2",
                "ParentTaskUID": "1",
                "Name": "项目范围规划2",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            },{
                "UID": "3",
                "ParentTaskUID": "2",
                "Name": "项目范围规划3",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            },{
                "UID": "4",
                "ParentTaskUID": "3",
                "Name": "项目范围规划4",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            },{
                "UID": "5",
                "ParentTaskUID": "0",
                "Name": "项目范围规划5",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            },{
                "UID": "10",
                "ParentTaskUID": "4",
                "Name": "项目范围规划10",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            },{
                "UID": "6",
                "ParentTaskUID": "0",
                "Name": "项目范围规划6",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            },{
                "UID": "123",
                "ParentTaskUID": "0",
                "Name": "项目范围规划123",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            },{
                "UID": "256",
                "ParentTaskUID": "0",
                "Name": "项目范围规划256",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            },{
                "UID": "177",
                "ParentTaskUID": "123",
                "Name": "项目范围规划177",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            },{
                "UID": "888",
                "ParentTaskUID": "1",
                "Name": "项目范围规划888",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            },{
                "UID": "666",
                "ParentTaskUID": "1",
                "Name": "项目范围规划666",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            },{
                "UID": "1666",
                "ParentTaskUID": "0",
                "Name": "项目范围规划1666",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            },{
                "UID": "1888",
                "ParentTaskUID": "0",
                "Name": "项目范围规划1888",
                "Duration": 5,
                "Start": "2007-01-01T00:00:00",
                "Finish": "2007-01-05T23:23:59",
                "PercentComplete": 0,
                "Summary": 1,
                "Critical": 0,
                "Milestone": 0,
                "PredecessorLink": []
            }];
            
            mini.parse();
            var dataArr2 = [];
            loadTree();
            var tree = mini.get("treegrid1");
            tree.setData(dataArr2);
            
            function loadTree(){
                for(var i = 0; i < dataArr.length; i++){
                    recursive(i);
                }
            }
            
            function recursive(index){
                console.log("index:" + index);
                var currentObj = dataArr[index];
                var parentObj = !currentObj ? null : getObjByUID(currentObj.ParentTaskUID);
                if(index >= dataArr.length){
                    return;
                }else if(parentObj == null){
                    if(!dataArr2.contains(currentObj)){
                        dataArr2.push(currentObj);
                    }
                }else{
                    if(!parentObj.children){
                        parentObj.children = [];
                    }
                    if(!parentObj.children.contains(currentObj)){
                        parentObj.children.push(currentObj);
                    }
                    index++;
                    recursive(index);
                }
            }
            
            function getObjByUID(UID){
                var obj = null;
                for(var i = 0; i < dataArr.length; i++){
                    if(dataArr[i].UID == UID){
                        obj = dataArr[i];
                        break;
                    }
                }
                return obj;
            }
            
        </script>
    </body>
</html>

好了,使用浏览器就可以看效果了.

浏览器效果图如下:

注意:treecolumn的值一定不能重复,要不然可能加载时,数据层次结构会错位.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的本地 JSON 数据的 jqGrid 4.6 的 demo: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>jqGrid 4.6 TreeReader Demo</title> <link rel="stylesheet" href="https://cdn.bootcss.com/jqueryui/1.12.1/themes/base/jquery-ui.min.css"> <link rel="stylesheet" href="https://cdn.bootcss.com/free-jqgrid/4.15.5/css/ui.jqgrid.min.css"> <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <script src="https://cdn.bootcss.com/jqueryui/1.12.1/jquery-ui.min.js"></script> <script src="https://cdn.bootcss.com/free-jqgrid/4.15.5/jquery.jqgrid.min.js"></script> <script> var mydata = [ {id: "1", name: "Node 1", parent: "0", level: "0", isLeaf: false, expanded: true}, {id: "2", name: "Node 2", parent: "1", level: "1", isLeaf: true, expanded: false}, {id: "3", name: "Node 3", parent: "1", level: "1", isLeaf: false, expanded: true}, {id: "4", name: "Node 4", parent: "3", level: "2", isLeaf: true, expanded: false}, {id: "5", name: "Node 5", parent: "3", level: "2", isLeaf: true, expanded: false}, {id: "6", name: "Node 6", parent: "0", level: "0", isLeaf: false, expanded: true}, {id: "7", name: "Node 7", parent: "6", level: "1", isLeaf: true, expanded: false}, {id: "8", name: "Node 8", parent: "6", level: "1", isLeaf: true, expanded: false}, {id: "9", name: "Node 9", parent: "0", level: "0", isLeaf: true, expanded: false} ]; $(function () { $("#list").jqGrid({ data: mydata, datatype: "local", colModel: [ {name: "id", width: 50}, {name: "name", width: 150}, {name: "parent", width: 100, hidden: true} ], treeGrid: true, treeGridModel: "adjacency", ExpandColumn: "name", ExpandColClick: true, caption: "jqGrid 4.6 TreeReader Demo", height: "auto", rowNum: 10000, jsonReader: { repeatitems: false, root: function (obj) { return obj; }, page: function () { return 1; }, total: function () { return 1; }, records: function (obj) { return obj.length; } }, treeReader: { parent_id_field: "parent", level_field: "level", leaf_field: "isLeaf", expanded_field: "expanded" } }); }); </script> </head> <body> <table id="list"></table> </body> </html> ``` 上述示例中,我们构建了一个包含简单树形结构数据的 `mydata` 数组。每个节点都包含了 `id`、`name`、`parent`、`level`、`isLeaf` 和 `expanded` 属性。其中 `id` 用于表示节点的唯一标识,`name` 用于显示节点的名称,`parent` 用于表示节点的父节点 ID,`level` 用于表示节点的层级,`isLeaf` 用于表示节点是否为叶子节点,`expanded` 用于表示节点是否展开。 在 jqGrid 的配置中,我们使用 `data` 和 `datatype` 来指定加载本地数据,并使用 `colModel` 来定义表格的列模型。使用 `treeGrid` 和 `treeGridModel` 来启用 jqGrid 的树形功能,并使用 `ExpandColumn` 和 `ExpandColClick` 来使树形结构可以展开和收缩。`jsonReader` 和 `treeReader` 分别用于解析 JSON 数据和树形结构的数据。 在 `jsonReader` 中,我们将 `root` 属性设置为返回整个 JSON 数据,将 `records` 属性设置为返回 JSON 数组的长度,而其他属性则按默认值设置即可。 在 `treeReader` 中,我们使用了 `parent_id_field`、`level_field`、`leaf_field` 和 `expanded_field` 来指定树形结构中每个节点的父节点 ID、层级、是否为叶子节点和是否展开。这些属性的值需要在 `mydata` 数组中提供。 你可以根据需要修改 `mydata` 数组的内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值