回答问题:http://www.iteye.com/problems/20463
一般情况下最好是能在后台组装好格式再传递给前台展示.
但是如果基于某些设计上的原因或者是后台不可控的情况下,
可以在前台转换,
方法有很多种,一种是在前台遍历数据,构造出符合tree的数据.
还有一种是直接遍历添加到Tree,如下:
Ext.onReady(function(){
Ext.BLANK_IMAGE_URL = '/images/s.gif';
Ext.QuickTips.init();
testTreeCustomData();
});
function testTreeCustomData(){
//如下数据,要求是对于unit_path为11或12的是1的子节点,111、112为11的子节点,121、122为12的子节点,以此类推。
var dataArr = [
{unit_path:1,text:1},
{unit_path:11,text:11},
{unit_path:12,text:12},
{unit_path:111,text:111},
{unit_path:121,text:121},
{unit_path:112,text:112},
{unit_path:122,text:122}
//,{unit_path:222,text:'xx'}
//,{unit_path:132,text:'xx'}
];
var tree = new Ext.tree.TreePanel({
useArrows: true,
autoScroll: true,
animate: true,
collapsible:true,
containerScroll: true,
frame:true,
width:200,
height:400,
renderTo:document.body,
autoHeight:true,
//rootVisible:false,
root:new Ext.tree.TreeNode({
//id:'root',
text: '根节点',
expanded:true,
draggable: false
}),
loadCustomData:function(dataArr){
for(var i=0;i<dataArr.length;i++){
var obj=dataArr[i];
var path=obj.unit_path.toString();
var parentNode=null;
var node = new Ext.tree.TreeNode({
//id: path,
text: obj.text,
//自定义属性,可以在后文通过node.attributes.unit_path读取
unit_path: path,
qtip:'',
draggable: false
});
//如果没有该属性,或者属性长度为1,则放到根节点
parentNode = this.root;
if(!Ext.isEmpty(path)){
for(var j=0;j<path.length-1;j++){
//从头到尾找到父节点
parentNode = parentNode.findChild('unit_path',path.substring(0,j+1));
//TODO:判断异常情况,如有path=132,但是对应的13节点不存在。
//parentNode = Ext.value(parentNode.findChild('unit_path',path.substring(0,j+1)),parentNode);
}
}
parentNode.appendChild(node);
}
}
});
tree.loadCustomData(dataArr);
tree.expandAll();
分享到:
相关推荐
ExtJS Tree 是一个基于 ExtJS 框架的组件,用于构建可交互的、层级结构的树形控件。在 Web 开发中,它经常被用来展示目录结构、组织架构或者复杂的分类数据。异步加载树型是 ExtJS Tree 的一个重要特性,允许只在...
ExtJS Tree是Ext JS库中的一个组件,用于创建和展示层次结构的数据,通常表现为树形结构。这个组件在Web应用程序中广泛使用,特别是在需要管理有层级关系的数据时,如文件系统、组织架构或者导航菜单等。动态加载是...
ExtJS Tree 需要的数据结构是一个 JSON 数组,每个元素代表树的一个节点。节点可以包含属性如 "cls"(样式类)、"id"(唯一标识)、"leaf"(是否为叶子节点)以及 "children"(子节点数组)。例如: ```javascript ...
ExtJs Tree是一种基于ExtJs框架的树形控件,它允许开发者构建出复杂的数据层次结构。通过ExtJs Tree,用户可以直观地展示数据之间的层级关系,并支持多种交互操作,如展开、折叠节点等。 ### 特性与功能 #### 树形...
ExtJS Tree 示例是一种基于ExtJS库实现的交互式树形组件,它允许用户在Web应用程序中展示层次结构数据。在本示例中,我们将探讨如何使用ExtJS来创建、访问和操作一个树形结构,特别是在数据库操作方面,如添加和删除...
ExtJS Tree + JSON + Struts2 示例源代码是结合了三种技术来实现一个动态的、交互式的树形数据展示的应用。这个示例中,ExtJS用于前端UI的构建,JSON作为数据交换格式,而Struts2则作为后端MVC框架处理请求和返回...
ExtJS的Tree组件还提供了一系列事件,如`beforeitemexpand`、`itemexpand`、`itemcollapse`等,这些事件可以在节点展开或收起时触发,允许你在这些时刻执行自定义代码,增加更多功能或进行状态管理。 ### 样式与...
ExtJs 2.2.1 tree实例,内附mysql数据文件 1. 数据节点一次性加载 2. 节点分为两个类(项目和设备) 3. 右键菜单 4. 节点增、删、改操作 ....... 后台是java struts1。 本例旨在说明extjs的tree操作,后台操作很简陋...
ExtJS Tree是Sencha公司开发的ExtJS框架中的一个组件,用于构建可交互的树形数据结构。在网页应用中,树形结构常用于展示层级关系的数据,如目录结构、组织架构或者数据库的表关系。ExtJS Tree组件提供了丰富的功能...
ExtJS Tree是基于ExtJS框架实现的一种数据结构展示方式,它主要用于展示层级关系的数据,例如组织结构、文件系统等。ExtJS是一个强大的JavaScript库,专为构建富客户端Web应用程序而设计,提供了丰富的组件化功能和...
ExtJS Tree 是一个功能强大的JavaScript组件,用于在Web应用程序中创建和展示层次结构的数据,它在ExtJS框架中扮演着重要角色。这个压缩包“extjs tree 学习资料”显然是为那些希望深入理解并掌握ExtJS Tree组件的...
ExtJS的Tree组件是Sencha ExtJS框架中的一个重要部分,用于构建可交互的树形结构数据展示。在ExtJS中,TreePanel是用来显示和操作树形数据的主要组件,它可以用于组织层次化的信息,如文件系统、组织架构或者分类...
这个压缩包中的"test"文件可能是一个测试目录或文件,通常包含HTML、CSS、JavaScript文件以及必要的图片和JSON数据文件,用于演示如何配置和使用ExtJS Tree控件。开发者可以通过查看这些文件来学习如何设置异步加载...
ExtJs4 Checkbox Tree是基于ExtJs 4框架实现的一种特殊树形组件,它在传统的树形结构基础上增加了复选框功能。这种组件常用于需要用户多选树形数据的场景,比如权限设置、目录选择等。下面将详细介绍ExtJs4 Checkbox...
在给定的文件中,我们关注的是“带复选框的ExtJS tree”这一主题,这涉及到ExtJS框架下的树形组件(TreePanel)如何与复选框结合,为用户提供更为灵活的数据选择和管理方式。 ### 标题解析:“带复选框的ExtJS tree...
### ExtJs自定义消息框详解 #### 一、引言 在Web开发中,与用户的交互体验至关重要。作为一款优秀的JavaScript框架,ExtJs提供了多种工具和组件帮助开发者快速构建高质量的用户界面。其中,消息框作为一种常见的...
在ExtJS中,Tree和Tab是两种常用的组件,分别用于展示层次结构的数据(如目录结构)和创建多页面布局。本篇文章将详细探讨如何利用JSON数据来实现这两者的交互。 首先,让我们了解一下`Tree`组件。在ExtJS中,Tree...
在ExtJS中,Tree是一个非常重要的组件,它用于呈现层级结构的数据。在处理Tree节点时,特别是涉及到链接和新窗口打开的情况,有一些特定的技术要点需要注意。 首先,标题“extjs tree 节点 链接 新窗口”指的是在...
ExtJS AJAX Tree是一种基于JavaScript的动态树形结构,它利用AJAX技术来异步加载节点数据,无需在服务器端生成完整的树结构。这种方式可以显著提高页面加载速度,尤其是在处理大量数据时。ExtJS是一个功能丰富的...
Ext各种组件的使用实例,Extjs tree+grid+form+panel 使用实例