/*
 * Ext JS Library 2.2
 * Copyright(c) 2006-2008, Ext JS, LLC.
 * [email protected]
 * 
 * http://extjs.com/license
 */
Ext.onReady(function(){
    // shorthand
    var Tree = Ext.tree;
    
    var tree = new Tree.TreePanel({
        el:'tree-div',
        useArrows:true,
        autoScroll:true,
        animate:true,
        enableDD:true,
        containerScroll: true,        // auto create TreeLoader
        dataUrl: 'get-nodes.php',        root: {
            nodeType: 'async',
            text: 'Ext JS',
            draggable:false,
            id:'examples'
        }
    });    // render the tree
    tree.render();
    tree.getRootNode().expand();
});
修改id:'examples'是可以改变树的根节点的,把树的根节点设为根目录(Linux或windows),就不行了,就高人指点

解决方案 »

  1.   

    http://www.txdnet.cn/ShowEssay-2-553-Txdnet.jsp
      

  2.   

    大侠,这好像和ext-js没哈关系啊?!
    get-nodes.php已经有遍历下面的所有子集的功能,只是不知怎么给reorder.js一个正确的接口 
      

  3.   

    你用流连接 U 盘,通过流将这个盘符下所有文件读取出来并存储起来。在后台将 list 通过 JSON 转换成 json 格式的数据。在前天 ext 中的 loader: new Ext.tree.TreeLoader({
                   dataUrl:换成你输出 json 数据的那个页面
             }),这样就可以从后台动态读取值并填充到树里了。
    json 格式:[
     {
            id: 1,
            text: 'Node 1',
            leaf: true
      },{
            id: 2,
            text: 'Node 2',
            leaf:false,
            children: [{
                id: 3,
                text: 'Node 2.1',
                leaf: true
            }]
       },{
            id: 4,
            text: 'Node 3',
            leaf: true
      }
    ]
    你输出的 json 数据只要你符合这个格式就可以了啊!
      

  4.   

    汗!!我的PHP是低版本的,json_encode这个直接使用无效,
    换了种使用方式总算出现了,呵呵!
      

  5.   


    已经和你说过了
    你要用PHP遍利你的那个盘啊!!
      

  6.   

    你遍利你的U盘以后把他组合成json 格式啊
      

  7.   

    <?php    
    // 注意在 4.0.0-RC2 之前不存在 !== 运算符 
    $nodess = array();   
     $base_dir = "c:";  
     $e = dir($base_dir.$node);
    //if ($handle = opendir($base_dir)) {  
      
       // echo "Directory handle: $handle\n";    
        //echo "Files:\n";    
       
        /* 这是正确地遍历目录方法 */   
        //while (false !== ($file = readdir($handle))) {
    while($file = $e->read()){  
    if($file != "." && $file != ".."){
    //if(is_dir($base_dir.$file)){
    if(is_dir($base_dir.$node.'\\'.$file)){
     $nodess[] = array('text'=>$file, 'id'=>$node.'\\'.$file/*, 'qtip'=>$qtip*/, 'cls'=>'folder');
    //echo("<font color=red>".$file."</font><br />");
    }else{
     $nodess[] = array('text'=>$file, 'id'=>$node.'\\'.$file, 'leaf'=>true/*, 'qtip'=>$qtip, 'qtipTitle'=>$file */, 'cls'=>'file');
    //echo("<font color=green>".$file."</font><br />");
    }
    }    }    
       
        //closedir($handle);    
    //} 
    echo json_encode($nodess);   
    ?> 
    这是遍利C盘根目录下的
      

  8.   


    其实,楼上各位已经讲的很清楚了。// auto create TreeLoader
    dataUrl: 'get-nodes.php',这句中的 get-node.php是用来生成树中数据的URL,
    这个页面需要你自己来完成,并发布到服务器上。
    在执行的过程中,
    页面通过ajax向服务器上get-nodes.php发出请求,
    get-nodes.php接到请求后生成数据并返回给页面。你要做的就是,
    依照楼上所说的作成遍历你想访问目录数据的服务器端程序,
    并在上面的代码中指明
    datUrl = '用来生成树结点数据的URL'。
      

  9.   

    reorder.js文件要改的内容如下:
    var tree = new Tree.TreePanel({
            el:'tree-div',
            useArrows:true,
            autoScroll:true,
            animate:true,
            enableDD:true,
            containerScroll: true,        // auto create TreeLoader
            dataUrl: 'get-nodes.php',        root: {
                nodeType: 'async',
                text: 'c:\\',
                draggable:false,
                id:'\\Program Files'
            }
        });至于get-nodes.php就是我跟你说的代码但不知道为什么读不出WINDOWS这个目录里面的,不知道是不是权限问题还是怎么
      

  10.   

    谢谢大家的关注,树已经调试除出来了,但存在bug,看下图或运行代码(http://download.csdn.net/source/777813)就知道
    如下图:Documents and Dettings出现了n次,我想是php代码逻辑存在问题,正在调试中
      

  11.   

    get-nodes.php代码你怎么写的?WINDOWS你能读取吗?我的读不了,其他都可以
    不知道是不是权限问题
      

  12.   

    这棵树能够遍历磁盘目录了,但不支持中文目录我正想着办法解决,大家有主意的也不妨帮帮小弟,当你成功的时候,你发现问题真的很简单,但当你没有思路的时候,问题又是那么的难!谢谢大家的帮助!
    现在我把reorder.js和get-nodes.php的代码贴出,reorder.js:/*
     * Ext JS Library 2.2
     * Copyright(c) 2006-2008, Ext JS, LLC.
     * [email protected]
     * 
     * http://extjs.com/license
     */
    Ext.onReady(function(){
        // shorthand
        var Tree = Ext.tree;
        
        var tree = new Tree.TreePanel({
            el:'tree-div',
            useArrows:true,
            autoScroll:true,
            animate:true,
            enableDD:true,
            containerScroll: true,        // auto create TreeLoader
            dataUrl: 'get-nodes.php',        root: {
                nodeType: 'async',
                text: 'C:\\',
                draggable:false,
                id:'\\'
            }
        });    // render the tree
        tree.render();
        tree.getRootNode().expand();
    });
    <?php
    // from php manual page
    require_once('JSON.php'); 
    function formatBytes($val, $digits = 3, $mode = "SI", $bB = "B"){ //$mode == "SI"|"IEC", $bB == "b"|"B"
       $si = array("", "K", "M", "G", "T", "P", "E", "Z", "Y");
       $iec = array("", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi", "Yi");
       switch(strtoupper($mode)) {
           case "SI" : $factor = 1000; $symbols = $si; break;
           case "IEC" : $factor = 1024; $symbols = $iec; break;
           default : $factor = 1000; $symbols = $si; break;
       }
       switch($bB) {
           case "b" : $val *= 8; break;
           default : $bB = "B"; break;
       }
       for($i=0;$i<count($symbols)-1 && $val>=$factor;$i++)
           $val /= $factor;
       $p = strpos($val, ".");
       if($p !== false && $p > $digits) $val = round($val);
       elseif($p !== false) $val = round($val, $digits-$p);
       return round($val, $digits) . " " . $symbols[$i] . $bB;
    }$dir = isset($_REQUEST['lib'])&&$_REQUEST['lib'] == 'yui' ? '../../../' : '../../';
     $dir = "C:\\";  
    $node = isset($_REQUEST['node'])?$_REQUEST['node']:"";
    if(strpos($node, '..') !== false){
        die('Nice try buddy.');
    }
    $nodes = array();
    $d = dir($dir.$node);
    while($f = $d->read()){
        if($f == '.' || $f == '..' || substr($f, 0, 1) == '.')continue;
        $lastmod = date('M j, Y, g:i a',filemtime($dir.$node.'/'.$f));
        if(is_dir($dir.$node.'/'.$f)){
            $qtip = 'Type: Folder<br />Last Modified: '.$lastmod;
            $nodes[] = array('text'=>$f, 'id'=>$node.'/'.$f/*, 'qtip'=>$qtip*/, 'cls'=>'folder');
        }else{
            $size = formatBytes(filesize($dir.$node.'/'.$f), 2);
            $qtip = 'Type: JavaScript File<br />Last Modified: '.$lastmod.'<br />Size: '.$size;
            $nodes[] = array('text'=>$f, 'id'=>$node.'/'.$f, 'leaf'=>true/*, 'qtip'=>$qtip, 'qtipTitle'=>$f */, 'cls'=>'file');
        }
    }
    $d->close();
    //echo json_encode($nodes);
    $json = new Services_JSON(); 
    echo $json->encode($nodes); 
    ?>
      

  13.   

    reorder.js文件中的id指示了根节点的位置
    root: {
                nodeType: 'async',
                //root nodes text 
                text: 'root text display',
                draggable:false,
                id:'/'
            }