你的位置:首页 > Java教程

[Java教程]javascript将行结构数据转化为树形结构数据,可提供给常用的tree插件直接使用


js接收到后台的数据如下

 1 /// 部门信息 2 var departRows = [{ 3   parentDepartId: 'root', 4   departId: 'DC', 5   departName: '地产集团' 6 }, { 7   parentDepartId: 'DC', 8   departId: '01', 9   departName: '上海地产本部'10 }, {11   parentDepartId: 'DC',12   departId: '02',13   departName: '中华企业'14 }, {15   parentDepartId: '02',16   departId: '0200',17   departName: '中华企业股份有限公司本部'18 }, {19   parentDepartId: '02',20   departId: '0201',21   departName: '上海古北(集团)有限公司'22 }, {23   parentDepartId: '0201',24   departId: '020100',25   departName: '上海古北(集团)有限公司本部'26 }, {27   parentDepartId: '0201',28   departId: '020101',29   departName: '上海古北顾村置业有限公司'30 }, {31   parentDepartId: '0201',32   departId: '020102',33   departName: '上海古北京宸置业发展有限公司'34 }, {35   parentDepartId: '0201',36   departId: '020103',37   departName: '苏州洞庭房地产发展有限公司'38 }];

View Code

通常我们所使用的一些tree插件是无法直接解析上边这种数据源的,那么我们怎么将行结构的数据转化为树形结构数据,提供给easyui、extjs等一系列tree控件使用呢?

 1 /// <summary> 2 /// 行格式数据转化为tree格式数据 3 /// </summary> 4 /// <param name="rows">rows格式数据</param>  5 /// <param name="attributes">属性信息</param>  6 function convertTreeData(rows, attributes) { 7   var keyNodes = {}, parentKeyNodes = {}; 8   for (var i = 0; i < rows.length; i++) { 9     var row = rows[i];10     row.id = row[attributes.keyField];11     row.parentId = row[attributes.parentKeyField];12     row.text = row[attributes.textField];13     row.children = [];14 15     // Id对应节点16     keyNodes[row.id] = row;17 18     // ParentId对应子节点19     if (parentKeyNodes[row.parentId]) { parentKeyNodes[row.parentId].push(row); }20     else { parentKeyNodes[row.parentId] = [row]; }21 22     // 将子节点集合添加到当前节点下23     var children = parentKeyNodes[row.id];24     if (children) { row.children = children; }25 26     // 将当前节点添加到父级下27     var pNode = keyNodes[row.parentId];28     if (pNode) { pNode.children.push(row); }29   }30   return parentKeyNodes[attributes.rootParentId];31 }

View Code

可以将上边函数作为公共方法调用,也或者封装在插件内部使用,使用方法如下

 1 /// 属性配置信息 2 var attributes = { 3   // 标识字段名 4   keyField: 'departId', 5   // 上级标识字段名 6   parentKeyField: 'parentDepartId', 7   // 文本字段名 8   textField: 'departName', 9   // 根节点标识10   rootKey: 'root'11 }12 13 /// treeData即为转化后的树形结构数据14 var treeData = convertTreeData(departRows, attributes);15 16 /// 可提供给easyui等插件直接使用17 $('#testTree').tree({18   data: treeData19 });

View Code
下载



到巴厘岛旅游团购去巴厘岛旅游攻略巴厘岛六日游行程安排参考去巴厘岛旅游跟团行程巴厘岛旅游护照签证2015深圳欢乐谷圣诞节活动夜场几点开始?深圳欢乐谷圣诞节夜场好玩吗? 2015深圳欢乐谷圣诞节儿童票多少钱?深圳欢乐谷圣诞节适合多大儿童玩? 2015圣诞节深圳欢乐谷门票多少钱?深圳欢乐谷圣诞节门票价格? 2015深圳欢乐谷圣诞节什么时间开始?深圳欢乐谷圣诞节活动什么时间结束? 澳门环岛要出境吗?珠海澳门环岛起点和终点在哪里? 澳门环岛夜游门票价格?珠海澳门环岛夜游门票包含什么? 珠海澳门环岛船游门票多少钱?澳门环岛船游网上可以预订吗? 澳门环岛游日游多少钱?珠海澳门环岛游日游和夜游有什么区别? 峨眉山冰雪温泉节开幕 滑雪免费泡温泉 台湾各地美食指南,台湾各地有哪些美食,台湾美食分布 跟随《少年派》展开一段奇妙的印度旅程,印度少年派,印度之旅 春节出境游 手续办理知多少 成都南湖梦幻岛门票_成都南湖梦幻岛乐园门票价格 蒙古族的那达慕大会 厦门鼓浪屿不可错过特色美食 黄帝陵门票_西安轩辕黄帝陵门票价格 HL-50103GC Datasheet HL-50103GC Datasheet HL-50103GD Datasheet HL-50103GD Datasheet HL-50103GT Datasheet HL-50103GT Datasheet 2月去国外哪里旅游好 2月去国外哪里旅游好 2月去国外哪里旅游好 3月适合去哪儿旅游 3月适合去哪儿旅游 3月适合去哪儿旅游 2月适合到哪里旅游 2月适合到哪里旅游 2月适合到哪里旅游