`
atian25
  • 浏览: 469704 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ExtJS Tree载入自定义数据

阅读更多

回答问题: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 Tree 是一个基于 ExtJS 框架的组件,用于构建可交互的、层级结构的树形控件。在 Web 开发中,它经常被用来展示目录结构、组织架构或者复杂的分类数据。异步加载树型是 ExtJS Tree 的一个重要特性,允许只在...

    动态加载extjs tree

    ExtJS Tree是Ext JS库中的一个组件,用于创建和展示层次结构的数据,通常表现为树形结构。这个组件在Web应用程序中广泛使用,特别是在需要管理有层级关系的数据时,如文件系统、组织架构或者导航菜单等。动态加载是...

    Extjs Tree + JSON + Struts2 例子

    ExtJS Tree 需要的数据结构是一个 JSON 数组,每个元素代表树的一个节点。节点可以包含属性如 "cls"(样式类)、"id"(唯一标识)、"leaf"(是否为叶子节点)以及 "children"(子节点数组)。例如: ```javascript ...

    ExtJs Tree

    ExtJs Tree是一种基于ExtJs框架的树形控件,它允许开发者构建出复杂的数据层次结构。通过ExtJs Tree,用户可以直观地展示数据之间的层级关系,并支持多种交互操作,如展开、折叠节点等。 ### 特性与功能 #### 树形...

    extjs tree示例

    ExtJS Tree 示例是一种基于ExtJS库实现的交互式树形组件,它允许用户在Web应用程序中展示层次结构数据。在本示例中,我们将探讨如何使用ExtJS来创建、访问和操作一个树形结构,特别是在数据库操作方面,如添加和删除...

    Extjs Tree + JSON + Struts2 示例源代码

    ExtJS Tree + JSON + Struts2 示例源代码是结合了三种技术来实现一个动态的、交互式的树形数据展示的应用。这个示例中,ExtJS用于前端UI的构建,JSON作为数据交换格式,而Struts2则作为后端MVC框架处理请求和返回...

    extjs的tree的使用

    ExtJS的Tree组件还提供了一系列事件,如`beforeitemexpand`、`itemexpand`、`itemcollapse`等,这些事件可以在节点展开或收起时触发,允许你在这些时刻执行自定义代码,增加更多功能或进行状态管理。 ### 样式与...

    Extjs tree实例【源代码】

    ExtJs 2.2.1 tree实例,内附mysql数据文件 1. 数据节点一次性加载 2. 节点分为两个类(项目和设备) 3. 右键菜单 4. 节点增、删、改操作 ....... 后台是java struts1。 本例旨在说明extjs的tree操作,后台操作很简陋...

    ExtJS Tree教程及例子代码

    ExtJS Tree是Sencha公司开发的ExtJS框架中的一个组件,用于构建可交互的树形数据结构。在网页应用中,树形结构常用于展示层级关系的数据,如目录结构、组织架构或者数据库的表关系。ExtJS Tree组件提供了丰富的功能...

    extjs tree

    ExtJS Tree是基于ExtJS框架实现的一种数据结构展示方式,它主要用于展示层级关系的数据,例如组织结构、文件系统等。ExtJS是一个强大的JavaScript库,专为构建富客户端Web应用程序而设计,提供了丰富的组件化功能和...

    extjs tree 学习资料

    ExtJS Tree 是一个功能强大的JavaScript组件,用于在Web应用程序中创建和展示层次结构的数据,它在ExtJS框架中扮演着重要角色。这个压缩包“extjs tree 学习资料”显然是为那些希望深入理解并掌握ExtJS Tree组件的...

    Extjs的tree

    ExtJS的Tree组件是Sencha ExtJS框架中的一个重要部分,用于构建可交互的树形结构数据展示。在ExtJS中,TreePanel是用来显示和操作树形数据的主要组件,它可以用于组织层次化的信息,如文件系统、组织架构或者分类...

    extjs-tree.zip_extjs tree

    这个压缩包中的"test"文件可能是一个测试目录或文件,通常包含HTML、CSS、JavaScript文件以及必要的图片和JSON数据文件,用于演示如何配置和使用ExtJS Tree控件。开发者可以通过查看这些文件来学习如何设置异步加载...

    ExtJs4 Checkbox tree

    ExtJs4 Checkbox Tree是基于ExtJs 4框架实现的一种特殊树形组件,它在传统的树形结构基础上增加了复选框功能。这种组件常用于需要用户多选树形数据的场景,比如权限设置、目录选择等。下面将详细介绍ExtJs4 Checkbox...

    带复选框的 ExtJs tree

    在给定的文件中,我们关注的是“带复选框的ExtJS tree”这一主题,这涉及到ExtJS框架下的树形组件(TreePanel)如何与复选框结合,为用户提供更为灵活的数据选择和管理方式。 ### 标题解析:“带复选框的ExtJS tree...

    ExtJs自定义消息框

    ### ExtJs自定义消息框详解 #### 一、引言 在Web开发中,与用户的交互体验至关重要。作为一款优秀的JavaScript框架,ExtJs提供了多种工具和组件帮助开发者快速构建高质量的用户界面。其中,消息框作为一种常见的...

    Extjs的Tree和Tab使用json做tree数据交互

    在ExtJS中,Tree和Tab是两种常用的组件,分别用于展示层次结构的数据(如目录结构)和创建多页面布局。本篇文章将详细探讨如何利用JSON数据来实现这两者的交互。 首先,让我们了解一下`Tree`组件。在ExtJS中,Tree...

    extjs tree 节点 链接 新窗口

    在ExtJS中,Tree是一个非常重要的组件,它用于呈现层级结构的数据。在处理Tree节点时,特别是涉及到链接和新窗口打开的情况,有一些特定的技术要点需要注意。 首先,标题“extjs tree 节点 链接 新窗口”指的是在...

    extjs ajax tree(js动态树,无需递归)

    ExtJS AJAX Tree是一种基于JavaScript的动态树形结构,它利用AJAX技术来异步加载节点数据,无需在服务器端生成完整的树结构。这种方式可以显著提高页面加载速度,尤其是在处理大量数据时。ExtJS是一个功能丰富的...

    Extjs tree+grid+form+panel 使用实例

    Ext各种组件的使用实例,Extjs tree+grid+form+panel 使用实例

Global site tag (gtag.js) - Google Analytics