Extjs4——向TreeStore中加载数据

摘要:
root:tree.render('tree');leaf:vartree=newExt.tree.TreePanel({store:tree.render('tree');}elseif(“11”.equals(node)){json+=“[{id:leaf:{proxy:reader:{type:record:{property:direction:root:{text:

这里分别介绍使用JSON本地数据,JSP和XML向TreeStore中加载数据的实现方式

1.本地JSON数据:

注意txt文件中叶子节点一定要加上leaf:true的属性,否则文件会无限展开的

   var tree = new Ext.tree.TreePanel({
        store: new Ext.data.TreeStore({
            proxy: {
                type: 'ajax',
                url: '01-04-02.txt'
            },
            root: {
                text: '我是根'
            }
        })
    });

    tree.render('tree');

01-04-02.txt内容如下:

[
    {text:'01',children:[
        {text:'01-01',leaf:true},
        {text:'01-02',children:[
            {text:'01-02-01',leaf:true},
            {text:'01-02-02',leaf:true}
        ]},
        {text:'01-03',leaf:true}
    ]},
    {text:'02',leaf:true}
]

最后的效果如下:

Extjs4——向TreeStore中加载数据第1张

2.使用JSP提供后台数据:

注意一定要为树形中的节点设置id,不能重复,后台会根据id来判断究竟是哪个节点正在展开,从而返回对应的数据,如果不设置root的ID,Ext会默认根节点的ID为root。

前台代码如下:

    var tree = new Ext.tree.TreePanel({
        store: new Ext.data.TreeStore({
            proxy: {
                type: 'ajax',
                url: '01-05-01.jsp'
            },
            root: {
                text: '我是根'
            }
        })
    });

    tree.render('tree');

后台JSP代码:

<%@ page contentType="text/html;charset=utf-8"%>
<%
    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");

    // 获得node参数,对应的是正在展开的节点id
    String node = request.getParameter("node");
    System.out.println(node);


    String json = "";
    if ("0".equals(node)) {
        json += "[{id:1,text:'节点阿一'},{id:2,text:'节点阿二'}]";
    } else if ("1".equals(node)) {
        json += "[{id:11,text:'节点阿一一',leaf:false},{id:12,text:'节点阿一二',leaf:true}]";
    } else if ("2".equals(node)) {
        json += "[{id:21,text:'节点阿二一',leaf:true},{id:22,text:'节点阿二二',leaf:true}]";
    } else if ("11".equals(node)) {
        json += "[{id:111,text:'节点阿一一一',leaf:true},{id:112,text:'节点阿一一二',leaf:true}]";
    }

    response.getWriter().print(json);
%>

分析下后台代码:

树形异步读取的关键是node参数,当某个节点展开时,TreeStore会根据设置的url地址去后台读取数据。而当发送请求时,TreeStore会把这个节点的ID作为参数一起发送到后台去。对后台来说,只要获得node参数,就知道是哪个节点正在展开。接着会根据节点的ID返回对应的json数据。

效果如下:

Extjs4——向TreeStore中加载数据第2张

3.XML数据:

 var store = Ext.create('Ext.data.TreeStore', {
        proxy: {
            type: 'ajax',
            url: '01-06-01.xml',
            extraParams: {
                isXml: true
            },
            reader: {
                type: 'xml',
                root: 'nodes',
                record: 'node'
            }
        },
        sorters: [{
            property: 'leaf',
            direction: 'ASC'
        },{
            property: 'text',
            direction: 'ASC'
        }],
        root: {
            text: 'Ext JS',
            id: 'src',
            expanded: true
        }
    });

    // create the Tree
    var tree = Ext.create('Ext.tree.Panel', {
        store: store,
        hideHeaders: true,
        rootVisible: true,
        viewConfig: {
            plugins: [{
                ptype: 'treeviewdragdrop'
            }]
        },
        height: 350,
         400,
        title: 'Directory Listing',
        renderTo: 'tree',
        collapsible: true
    });

效果如下:

Extjs4——向TreeStore中加载数据第3张

免责声明:文章转载自《Extjs4——向TreeStore中加载数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQL server 备份数据库到局域网共享文件夹(异地备份)url传递参数中有特殊字符时前后台处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

node程序的部署神器pm2的基本使用

pm2是从nodejs衍生出来的服务器进程管理工具,可以做到开机就启动nodejs。当然了,也可以用nohup来做这件事情的。 前言 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎。不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心处理器的系统中并不能发挥其最大...

Django学习篇:ORM

目录 Django ORM中常用字段和参数 一些说明: 常用字段: 1.AutoField 2.IntegerField 3.CharField Django ORM中常用字段和参数 一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表明,需要在model的Meta类中指定db_table参数,强烈建议使用小写表...

探索photo-sphere-viewer全景插件

此插件是一位外国人写的,官网API地址:https://photo-sphere-viewer.js.org/#methods, 点击看效果吧 3d旋转的amp: https://github.com/ampproject/amphtml Three.js: https://threejs.org/docs/index.html http://victu3...

误删节点或集群怎么办?这里有一颗后悔药

本文来自Rancher Labs 作者介绍 王海龙,Rancher中国社区技术经理,负责Rancher中国技术社区的维护和运营。拥有6年的云计算领域经验,经历了OpenStack到Kubernetes的技术变革,无论底层操作系统Linux,还是虚拟化KVM或是Docker容器技术都有丰富的运维和实践经验。 在实际使用Rancher过程中,偶尔会因为误操...

Node.js源码初探~我很好奇

前言: 最近在看Node.js,看了一段时间后便想着看看Node.js源码,自己本地调试调试;现在便说说这个过程中的坑,以及一些需要注意的地方;       Node.js需要一定C++基础,建议看完C++Primer再看,否则V8的好多表达方式,指针,引用,模板之类的会看不懂;       代码已上传GitHub地址:   https://github....

MySQL行列转换

实际应用中,会遇到需要把表的某些行转换成列,或者把列转换成行的情况。比如一张表在数据库中是这样的:  图1 但是,需要的结果可能是这样:  图2 这个时候就得行列转换了。 1.行转列的几种方法 1.1 case ...  when  ... then ... else ... end select uname,uid, -- 正常查询的字段 sum( ca...