博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
easyui tree 模仿ztree 使用扁平化加载json
阅读量:4619 次
发布时间:2019-06-09

本文共 3354 字,大约阅读时间需要 11 分钟。

1,载入扩展JS

//作者孙宇//自定义loadFilter的实现$.fn.tree.defaults.loadFilter = function (data, parent) {    var opt = $(this).data().tree.options;    var idFiled,    textFiled,    parentField;    if (opt.parentField) {        idFiled = opt.idFiled || 'id';        textFiled = opt.textFiled || 'text';        parentField = opt.parentField;                 var i,        l,        treeData = [],        tmpMap = [];                 for (i = 0, l = data.length; i < l; i++) {            tmpMap[data[i][idFiled]] = data[i];        }                 for (i = 0, l = data.length; i < l; i++) {            if (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {                if (!tmpMap[data[i][parentField]]['children'])                    tmpMap[data[i][parentField]]['children'] = [];                data[i]['text'] = data[i][textFiled];                tmpMap[data[i][parentField]]['children'].push(data[i]);            } else {                data[i]['text'] = data[i][textFiled];                treeData.push(data[i]);            }        }        return treeData;    }    return data;};

2.举例

  //实例化。这里增加了三个属性,可以指定idFiled,textFiled和parentField。所以这里的simpleData可以不严格转换成tree的数据格式。$(function(){ $('#tt').tree({ checkbox: true, url: 'tree_data_simp.json', parentField:"pid", textFiled:"name", idFiled:"key" });});

3.JSON

[    {        "key": 1,        "name": "Folder1",        "iconCls": "icon-ok"    },    {        "key": 2,        "pid": 1,        "name": "File1",        "checked": true    },    {        "key": 3,        "pid": 1,        "name": "Folder2",        "state": "open"    },    {        "key": 4,        "pid": 3,        "name": "File3",        "attributes": {            "p1": "value1",            "p2": "value2"        },        "checked": true,        "iconCls": "icon-reload"    },    {        "key": 8,        "pid": 3,        "name": "Async Folder"    },    {        "key": 9,        "name": "language",        "state": "closed"    },    {        "key": "j1",        "pid": 9,        "name": "Java"    },    {        "key": "j2",        "pid": 9,        "name": "C#"    }]

4.扩展

ComboTree(树形下拉框)

扩展自$.fn.combo.defaults和$.fn.tree.defaults。使用$.fn.combotree.defaults重写默认值对象。

所以要想使ConboTree也可以加载扁平数据,可如下修改

$.fn.combotree.defaults.loadFilter = function(data, parent) {    var opt = $(this).data().tree.options;    var idFiled, textFiled, parentField;    if (opt.parentField) {        idFiled = opt.idFiled || 'id';        textFiled = opt.textFiled || 'text';        parentField = opt.parentField;        var i, l, treeData = [], tmpMap = [];        for (i = 0, l = data.length; i < l; i++) {            tmpMap[data[i][idFiled]] = data[i];        }        for (i = 0, l = data.length; i < l; i++) {            if (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {                if (!tmpMap[data[i][parentField]]['children'])                    tmpMap[data[i][parentField]]['children'] = [];                data[i]['text'] = data[i][textFiled];                tmpMap[data[i][parentField]]['children'].push(data[i]);            } else {                data[i]['text'] = data[i][textFiled];                treeData.push(data[i]);            }        }        return treeData;    }    return data;};

 

转载于:https://www.cnblogs.com/liaojie970/p/5319252.html

你可能感兴趣的文章
ddt Ui 案例2
查看>>
你还在为使用P/Invoke时,写不出win32 api对应的C#声明而犯愁吗?
查看>>
msbuild property metadata会overwrite msbuild task中的properties
查看>>
python系列前期笔记
查看>>
Android -- sqlite数据库随apk发布
查看>>
Android -- Fragment
查看>>
前端性能优化和规范
查看>>
python 之进程篇
查看>>
框架编程之路一
查看>>
Verilog学习----运算符、结构说明语句
查看>>
需求分析报告
查看>>
第四次作业
查看>>
Linux下使用pv监控进度
查看>>
Luogu P4901 排队 fib数列+树状数组+倍增
查看>>
PHP 锁机制
查看>>
每天CookBook之Python-036
查看>>
Django 之 cookie & session
查看>>
洛谷P2776 [SDOI2007]小组队列 链表 + 模拟
查看>>
ORA-39006错误原因及解决办法
查看>>
linux常用目录与作用
查看>>