zoukankan      html  css  js  c++  java
  • ExtTree学习笔记(转载)

    ext的tree学习笔记
    2007-11-23 11:08

    YUI.ext中的Tree组件可以用来在页面实现树型布局的效果,包括常见的树型菜单等,那么我们怎样才能生成一个Tree呢,主要有以下四个步骤;
    1.定义一个Tree对象:
    var tree = new Ext.tree.TreePanel('tree', {
                      animate:true,
                      loader: new Ext.tree.TreeLoader({
                              dataUrl:'get-nodes.jsp',
                              baseParams: {lib:'yui'}
                      }),
                      enableDD:true,
                      containerScroll: true,
                      dropConfig: {appendOnly:true}
                  });
    定义一个Tree对象时要声明该对象的ID以及相关的参数,如上所示,这个Tree对象的ID为tree,相关的参数包括是否有动画效果(animate:true),树节点的数据来源(loader: new Ext.tree.TreeLoader({dataUrl:'get-nodes.txt',baseParams: {lib:'yui'}})),是否可以拖放节点(enableDD:true),是否包含滚动条(containerScroll: true)以及节点拖放的配置(dropConfig: {appendOnly:true})等。
    2.生成Tree的根节点:
    var root = new Ext.tree.AsyncTreeNode({
                      text: 'yui-ext',
                      draggable:false,
                      id:'source'
                  });
    tree.setRootNode(root);
    首先生成一个节点,生成时可以定义该节点显示的文本(text属性),是否可以拖动(draggable属性,根节点需要定义为false),以及节点ID,这个ID使得我们可以在页面上用document.getElementById来获取该节点,然后调用tree.setRootNode(root)将该节点设置为树tree的根节点。
    3.生成Tree的其他节点:
    Tree的其他节点都需要从数据源中加载进来,创建Tree对象时就定义了获取数据源的路径--loader: new Ext.tree.TreeLoader({dataUrl:'get-nodes.jsp',baseParams: {lib:'yui'}}),其中get-nodes.jsp就是生成数据源的路径,而baseParams属性则定义了访问该路径时传入的HTTP请求参数(可以有多个),页面在生成树时会调用XMLHttpRequest来访问该路径并将返回的数据解析成节点。除了可以使用WEB服务动态生成数据源以外,你还可以使用静态文件做为数据源,YUI.ext只要求返回的数据格式类似下面这样即可:
    [{'text':'welcome.html','id':'welcome.html','cls':'file',myPara:'myValue'},
    {'text':'welcome2.html','id':'welcome2.html','leaf':true,'cls':'file','href':'welcome2.html'}]
    这些数据是存储到一个数组中的,数组中的每一项代表一个节点,每一个节点都包含以下几个主要属性:
    text:定义该节点显示的名称;
    id:定义该节点的页面ID,便于document.getElementById方法获取该节点;
    leaf:true或者false,定义该节点是否是叶子节点;
    cls:定义该节点的class(显示的样式);
    href:定义点击该节点后链接的页面;
    另外你还可以为节点增加自定义的属性,方法如上面的myPara:'myValue'一样。
    YUI.ext会自动将返回的数据解析成节点并正确显示到页面上。
    4.为Tree添加事件处理:
    a.当加入某个节点时,为其增加事件
    tree.on('append', function(tree, node){
           if(node.id == 'foo'){
               // 这里加入你对该事件的处理
           }
    });
    b.针对某个节点的单击事件
    tree.on('click', function(node){
           if(node.id == 'foo'){
               // 这里加入你对click事件的处理
           }
    });
    c.针对某个区域(集合)的事件
    tree.getSelectionModel().on('selectionchange', function(sm, node){
           if(node && node.id == 'foo'){
               // 这里加入你对该事件的处理
           }
    });
    经过以上四步我们就可以生成一个比较完整的Tree对象了。

    附:
    JS源代码,该代码中生成了两棵树,一棵是YUI Tree,一棵是YUI.ext Tree,并且一棵是用静态文件作为数据源,一棵是动态生成的数据源:

    Code
    版权说明

      如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
      作      者:温景良
      文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

  • 相关阅读:
    newcoder 筱玛的迷阵探险(搜索 + 01字典树)题解
    str&repr的使用&format模板的自定义
    内置函数的补充与getattrebuit & item系列
    python几种常用模块
    面向对象的反射&动态导入模块
    面向对象的封装&定制数据类型
    面向对象的多态
    面向对象的继承
    面向对象的属性与方法
    面向对象的属性及类的增删改查
  • 原文地址:https://www.cnblogs.com/wenjl520/p/1326232.html
Copyright © 2011-2022 走看看