easyui 扩展tree 为 ztree(id, pid)的扁平数据结构集

来源:互联网 发布:ios专业视频剪辑软件 编辑:程序博客网 时间:2024/06/10 17:56

实例化。这里增加了三个属性,可以指定idFiled,textFiled和parentField。所以这里的simpleData可以不严格转换成tree的数据格式。

$(function(){$('#tt3').tree({checkbox: true,url: 'tree_data_simp.php',parentField:"pid",textFiled:"name",idFiled:"key"});});

tree_data_simp.php 的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#"    }]

自定义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;};
原创粉丝点击