/*
* 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),就不行了,就高人指点
* 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),就不行了,就高人指点
解决方案 »
- js表单获取焦点的问题
- new运算符
- 请问有没有能控制由style="overflow-y: scroll"生成的滚动条的方法啊,就像window.scroll那种?
- 如何动态获取 table 中 td 所在行 和列
- 提问.
- 小问题,DIV的》》》》》》
- 最菜鸟的问题:JavaScript如何将一个数转化成整型的?高分,立马给分,在线等!!
- 怎样判断一个可以多选的列表框是否选了所有的值?
- 关于<img src="images/*.gif" width="229" height="103" usemap="#Map" border="0">
- extjs URL请求包含中文问题
- JS错怎么改,提示missing(before function paramenters),请大家帮忙一下!
- 请教:在使用frameset框架的web页面中如何实现关闭ie弹出确认对话框后点击确认跳转到另外一个页面否则还停留在当前页面
get-nodes.php已经有遍历下面的所有子集的功能,只是不知怎么给reorder.js一个正确的接口
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 数据只要你符合这个格式就可以了啊!
换了种使用方式总算出现了,呵呵!
已经和你说过了
你要用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盘根目录下的
其实,楼上各位已经讲的很清楚了。// auto create TreeLoader
dataUrl: 'get-nodes.php',这句中的 get-node.php是用来生成树中数据的URL,
这个页面需要你自己来完成,并发布到服务器上。
在执行的过程中,
页面通过ajax向服务器上get-nodes.php发出请求,
get-nodes.php接到请求后生成数据并返回给页面。你要做的就是,
依照楼上所说的作成遍历你想访问目录数据的服务器端程序,
并在上面的代码中指明
datUrl = '用来生成树结点数据的URL'。
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这个目录里面的,不知道是不是权限问题还是怎么
如下图:Documents and Dettings出现了n次,我想是php代码逻辑存在问题,正在调试中
不知道是不是权限问题
现在我把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);
?>
root: {
nodeType: 'async',
//root nodes text
text: 'root text display',
draggable:false,
id:'/'
}