Ext教程 arrow Ext控件使用 arrow 异步加载的树
 
     
异步加载的树
  2008-04-13
主要介绍如何通过与服务端通信来实现异步加载树形菜单,适用于cms的分类管理等。 ext支持从服务器动态加载树形菜单,这里要说明下,ext所识别的回调函数返回的数据类型都必须是json格式的,不明白什么是json的朋友请自行 google。这里我们需要将php的数组转换成json格式,,php5.2.5以上已经自带此功能,为了更好的兼容不同版本的php,建议使用 pear的json类来转换。相关下载地址为:http://pear.php.net/pepr/pepr-proposal-show.php?id=198,先看下服务端 treedata.php的代码:

 

<?php
/*
 leaf为false表示非叶子节点,为true表示是叶子节点
 */
$trees['root'][] = array('id'=>'1','text'=>'我是子节点1','leaf'=>false);
$trees['1'][] = array('id'=>'2','text'=>'我是孙子节点1','leaf'=>true);
$trees['root'][] = array('id'=>'4','text'=>'我是子节点2','leaf'=>false);
$trees['4'][] = array('id'=>'5','text'=>'我是孙子节点2','leaf'=>true);

require('Json.php');//包含json类
$result = $trees[$_REQUEST['node']];//此处的node为ext传的值,根据该值达到动态加载的效果
$json = new Services_JSON();
echo $json->encode($result);//格式化数组成json格式
?>

   接下来看下客户端js的代码:

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
 <head>
  <title> New Document </title>
  <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />
  <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
  <script type="text/javascript" src="ext/ext-all.js"></script>
 </head>

 <body>
 <script>
  Ext.onReady(function(){
    var Tree = Ext.tree;
    //声明树定义
    var tree = new Tree.TreePanel({
        el:'tree-div',//填充到的区域
        autoScroll:true,//自动滚动
        animate:true,//动画效果
        enableDD:true,//允许拖拽节点
        border:false,//没有边框
        rootVisible:true,//设为false,隐藏根节点
        containerScroll: true,
        //定义json来源文件url
        loader: new Tree.TreeLoader({
            dataUrl:'treedata.php'
        })
    });

    //定义根节点
    var root = new Tree.AsyncTreeNode({
        text: '我是根',
        draggable:false,//不允许拖拽
        id:'root'
    });
    tree.setRootNode(root);

    //生成树
    tree.render();
    root.expand();
});
</script>
<div id="tree-div"></div>
 </body>
</html>
          

运行代码,我们将得到如下效果:

 

   通过firebug(firefox的js调试插件,建议在配合ietab来一起进行js调试)的控制台,让我们来看看到底发生了什么,看下面两幅图:

 

 

   通过node的值在服务端动态生成json数据,这就是从服务端加载树形菜单的基本。点击事件请参照前一章。

最近更新 ( 2008-04-13 )
< 上一篇   下一篇 >
   
 
 
 
Copyright Infotmation overhere. | designed by Magicbox from Mambochina
曼波整站系统 基于 Mambo 开发,是免费的自由软件,遵循 GNU/GPL 开源许可协议。
曼波整站系统5.4.0Mambo中国Mambo Resource 联合增强开发。  闽ICP备08005204号