JavaScript将具有父子关系的数据转化成树形结构,供tree控件使用
类别:Web前端 浏览量:2360
时间:2016-9-21 JavaScript将具有父子关系的数据转化成树形结构,供tree控件使用
JavaScript将具有父子关系的数据转化成树形结构,供tree控件使用一、AJAX获取的Json数据
/// 部门信息
var departRows = [{
parentDepartId: 'root',
departId: 'DC',
departName: '集团'
}, {
parentDepartId: 'DC',
departId: '01',
departName: '上海总部'
}, {
parentDepartId: 'DC',
departId: '02',
departName: '苏州分部'
}, {
parentDepartId: '02',
departId: '0200',
departName: '苏州分部部门A'
}, {
parentDepartId: '02',
departId: '0201',
departName: '苏州分部部门B'
}, {
parentDepartId: '0201',
departId: '020100',
departName: '苏州分部部门B小组A'
}, {
parentDepartId: '0201',
departId: '020101',
departName: '苏州分部部门B小组B'
}, {
parentDepartId: '0201',
departId: '020102',
departName: '苏州分部部门B小组C'
}, {
parentDepartId: '0201',
departId: '020103',
departName: '苏州分部部门B小组D'
}];
二、通常tree插件是无法直接解析上边这种数据源的,转化方法
/// </summary>
/// <param name="rows">行结构数据</param>
/// <param name="attributes">属性信息</param>
function convertTreeData(rows, attributes) {
var keyNodes = {}, parentKeyNodes = {};
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
row.id = row[attributes.keyField];
row.parentId = row[attributes.parentKeyField];
row.text = row[attributes.textField];
row.children = [];
keyNodes[row.id] = row;
if (parentKeyNodes[row.parentId]) { parentKeyNodes[row.parentId].push(row); }
else { parentKeyNodes[row.parentId] = [row]; }
var children = parentKeyNodes[row.id];
if (children) { row.children = children; }
var pNode = keyNodes[row.parentId];
if (pNode) { pNode.children.push(row); }
}
return parentKeyNodes[attributes.rootParentId];
}
三、将转化的数据作为tree插件的数据源
/// 属性配置信息
var attributes = {
// 标识字段名
keyField: 'departId',
// 上级标识字段名
parentKeyField: 'parentDepartId',
// 文本字段名
textField: 'departName',
// 根节点标识
rootKey: 'root'
}
/// treeData即为转化后的树形结构数据
var treeData = convertTreeData(departRows, attributes);
/// 可提供给easyui等插件直接使用
$('#testTree').tree({
data: treeData
});
标签:javascript
您可能感兴趣
- JavaScript instanceof 的用法
- ASP.NET使用JavaScriptSerializer实现序列化与反序列化
- javascript将字符串转换成数组(如何将JavaScript将数组转为树形结构)
- 使用javascript数组循环(JavaScript数组reduce方法的语法与实例解析)
- 在vs中设置Javascript的智能提示
- js中alert加参数写法(详解JavaScript Alert函数执行顺序问题)
- javascript组件库实现(JavaScript分页组件使用方法详解)
- javascript弹出菜单(Javascript实现简易导航栏)
- Javascript操作DOM
- jquery留言板代码(JavaScript实现留言板添加删除留言)
- JavaScript中实现AES加密解密
- javascript如何操作文档元素(JavaScript操作元素实例大全)
- javascript设置鼠标(JavaScript实现鼠标控制自由移动的窗口)
- javascript 函数生命周期(JavaScript sleep睡眠函数的使用)
- 用javascript设计五子棋(JavaScript实现网页版五子棋游戏)
- js 图片编辑处理库(javascript input图片上传及预览,FileReader预览图片)
- 真牛 禹州将建成中等城市(禹州将建成中等城市)
- 被骂欺师灭祖,与郭德纲公开叫板,何云伟改名何沄伟,开始画画了(与郭德纲公开叫板)
- 相声转行影帝,被何晴抛弃,甩10年女友闪婚生子,刘威不靠谱情史(相声转行影帝被何晴抛弃)
- 岳云鹏不说相声,改行演员了 网友 快回来说相声(岳云鹏不说相声)
- 乔欣首演古装大女主,颜值演技双在线(乔欣首演古装大女主)
- 于正又推女性古装大剧 杨蓉乔欣演女配,两位女主成 重头戏(于正又推女性古装大剧)
热门推荐
- 微信小程序开发模式(微信小程序引入Vant框架的全过程记录)
- C#泛型List的用法
- 代码重构的方法
- SQL Server中raiserror
- dedecms列表样式修改(dedecms5.7sp1评论添加字段的实现方法)
- MySQL定时任务(EVENT事件)如何配置详解(MySQL定时任务EVENT事件如何配置详解)
- dedecms替代方案(DedeCMS投票模块漏洞解决方法)
- dedecms使用手册(dedecms 软件下载模块中添加下载方式为迅雷下载联盟代码)
- .NET中First,FirstOrDefault,Single,SingleOrDefault的区别
- mysql总是报错error(MySQL 5.6主从报错的实战记录)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9