转自http://www.blogjava.net/JaVaa/archive/2007/04/12/110070.aspx
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,并且一棵是用静态文件作为数据源,一棵是动态生成的数据源:
/*
* Ext JS Library 1.0 Beta 1
* Copyright(c) 2006-2007, Ext JS, LLC.
* licensing@extjs.com
*
* http://www.extjs.com/license
*/
var TreeTest = function(){
// shorthand
var Tree = Ext.tree;
return {
init : function(){
// yui-ext tree
var tree = new Tree.TreePanel('tree', {
animate:true,
loader: new Tree.TreeLoader({dataUrl:'get-nodes.txt'}),
enableDD:true,
containerScroll: true,
dropConfig: {appendOnly:true}
});
// add a tree sorter in folder mode
new Tree.TreeSorter(tree, {folderSort:true});
// set the root node
var root = new Tree.AsyncTreeNode({
text: 'yui-ext',
draggable:false, // disable root node dragging
id:'source'
});
tree.setRootNode(root);
// render the tree
tree.render();
root.expand(false, /*no anim*/ false);
//-------------------------------------------------------------
// YUI tree
var tree2 = new Tree.TreePanel('tree2', {
animate:true,
//rootVisible: false,
loader: new Ext.tree.TreeLoader({
dataUrl:'get-nodes.jsp',
baseParams: {lib:'yui'} // custom http params
}),
containerScroll: true,
enableDD:true,
dropConfig: {appendOnly:true}
});
// add a tree sorter in folder mode
new Tree.TreeSorter(tree2, {folderSort:true});
// add the root node
var root2 = new Tree.AsyncTreeNode({
text: 'Yahoo! UI Source',
draggable:false,
id:'yui'
});
tree2.setRootNode(root2);
tree2.render();
root2.expand(false, /*no anim*/ false);
}
};
}();
Ext.EventManager.onDocumentReady(TreeTest.init, TreeTest, true);
对应的HTML代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Drag and Drop between 2 TreePanels</title>
<link rel="stylesheet" type="text/css" href="../../../resources/css/ext-all.css" />
<!-- LIBS --> <script type="text/javascript" src="../../yui-utilities.js"></script> <script type="text/javascript" src="../../ext-yui-adapter.js"></script> <!-- ENDLIBS -->
<script type="text/javascript" src="../../ext-all.js"></script>
<script type="text/javascript" src="two-trees.js"></script>
<!-- Common Styles for the examples -->
<link rel="stylesheet" type="text/css" href="../examples.css" />
<style type="text/css">
#tree, #tree2 {
float:left;
margin:20px;
border:1px solid #c3daf9;
width:250px;
height:300px;
overflow:auto;
}
.folder .x-tree-node-icon{
background:transparent url(../../resources/images/default/tree/folder.gif);
}
.x-tree-node-expanded .x-tree-node-icon{
background:transparent url(../../resources/images/default/tree/folder-open.gif);
}
</style>
</head>
<body>
<script type="text/javascript" src="../examples.js"></script><!-- EXAMPLES -->
<h1>Drag and Drop betweens two TreePanels</h1>
<p>The TreePanels have a TreeSorter applied in "folderSort" mode.</p>
<p>Both TreePanels are in "appendOnly" drop mode since they are sorted.</p>
<p>Drag along the edge of the tree to trigger auto scrolling while performing a drag and drop.</p>
<p>The data for this tree is asynchronously loaded with a JSON TreeLoader.</p>
<p>The js is not minified so it is readable. See <a href="two-trees.js">two-trees.js</a>.</p>
<div id="tree"></div>
<div id="tree2"></div>
</body>
</html>
分享到:
相关推荐
总结来说,`Ext树例子`是关于如何使用ExtJS库中的`Ext.tree.Panel`组件来展示和操作层次化数据的一个主题。`tree1.txt`和`tree2.txt`文件提供了创建树的数据源,通过解析这些文件,我们可以构建出具有实际数据的交互...
总结一下,本项目中的"Ext下拉树、下拉表格"涉及了Ext组件的使用,包括下拉树和下拉表格的创建、数据模型的定义、以及与输入框的结合。由于项目资源中未包含Ext的基础文件,需要开发者自行准备并添加到项目中。通过...
#### 四、总结 通过上述步骤,我们可以使用ExtJS轻松地实现一个功能齐全的动态树形结构。这种结构不仅美观大方,而且能够高效地处理大量分层数据,非常适合于文件管理系统等场景。希望本教程能帮助您更好地理解和...
总结来说,EXT的分页和树形结构功能在构建复杂的Web应用程序中起着至关重要的作用。通过与Struts2框架的整合,可以构建出高效、交互性强的企业级应用。理解并熟练掌握这些技术,对于提升开发效率和用户体验有着显著...
总结起来,"静态EXT树"是一个与Linux文件系统相关的数据结构,用于优化文件操作。它可能在源码解析、工具开发或性能测试中扮演重要角色。深入学习这部分内容,需要掌握相关文件系统的理论知识,阅读和理解相关源码,...
总结来说,Ext4.2可增删树例子通过扩展和优化Ext4.2的树组件,实现了节点leaf属性的动态调整,提升了树形结构在运行时的灵活性和适应性。这对于需要实时反映数据变化的树状应用是一个重要的解决方案。通过深入研究和...
总结来说,"Ext 三态复选树"是使用ExtJS框架构建的一种交互式用户界面元素,允许用户在树形结构中选择数据项,并支持全选、部分选和未选的三态。通过分析给定的文件和资源,我们可以了解其背后的技术实现和设计思路...
标题 "Ext2.02的一些总结" 暗示了我们即将探讨的是关于Ext JS库的一个特定版本,即2.02,这是一个广泛使用的JavaScript框架,用于构建富客户端Web应用程序。Ext JS提供了丰富的用户界面组件和强大的数据管理功能。在...
它提供了丰富的组件库,包括各种用户界面元素,如表格、树形视图、表单、菜单等,使得开发者能够轻松创建复杂的、交互性强的网页应用。 在EXT的学习中,我们经常会接触到`Ext.MessageBox`,这是一个非常实用的类,...
总结,结合ExtJS和JSP,我们可以创建一个动态的、异步加载的树形视图,通过JSP在服务器端生成数据,然后在客户端使用ExtJS进行渲染和交互。这种方案在展示大量层次化数据时,既提供了良好的用户体验,又兼顾了性能。
总结来说,EXT2的树组件使用主要包括以下步骤: 1. 创建TreePanel实例,设置基本属性和TreeLoader。 2. 定义根节点,通常是AsyncTreeNode类型。 3. 渲染树,并根据需要展开根节点。 4. 服务端处理请求,生成JSON数据...
总结来说,Ext2Read是一个实用的工具,帮助Windows用户方便地访问和提取Linux EXT分区的数据,扩展了跨平台操作的可能性。不过,在使用过程中,用户应当遵循相应的安全规范,避免对数据造成不必要的损害。
总结来说,"Ext 树的级联选择扩展插件使用说明"涉及到的是在Ext JS环境中,如何利用自定义的`TreeCheckNodeUI.js`插件实现树形控件的级联选择功能。通过理解并运用上述步骤,开发者可以创建出交互性强、用户体验良好...
总结,EXT.NET的树加载和实现涉及到多个方面,包括数据源、数据绑定、模型、视图、事件处理、异步加载以及节点操作等。理解并掌握这些知识点,将有助于你在实际项目中灵活运用EXT.NET的树形控件。在学习过程中,参考...
总结来说,EXT3是一种可靠的Linux日志文件系统,它的横向菜单工具可能是为了提供一个直观且易用的图形界面,帮助用户方便地管理EXT3分区和文件系统。这样的工具对于提高Linux桌面环境的用户体验至关重要。
标题:“转:Ext Designer 可视化设计器及汉化全攻略” 这篇博客文章主要探讨了Ext Designer,这是一个强大的JavaScript用户界面设计工具,它允许开发者通过可视化的界面来构建复杂的Ext JS应用。Ext Designer提供...
4. 构建EXT树:在前端,EXT的TreePanel组件会解析XML数据并构建树结构。你需要配置TreePanel,包括指定数据源(通常是XML的URL),定义节点的模型(包括字段名和类型),以及设置树的其他属性,如是否可展开、是否有...
总结起来,EXT和DWR的结合提供了一种高效的方法来构建动态、交互式的树形菜单。EXT负责客户端的UI展示和用户交互,而DWR负责后台数据的实时更新,两者协同工作,使得Web应用能够提供类似桌面应用的用户体验。通过...
### Ext 拖动实例——树与表格全解析 #### 一、背景介绍 在现代Web应用开发中,用户交互体验越来越受到重视。其中,拖拽功能作为一种直观且高效的交互方式,被广泛应用于各种场景中。Ext JS作为一款强大的前端框架...