- 浏览: 342139 次
- 性别:
- 来自: 武汉
最新评论
-
ynymf:
错位问题看这里:http://www.cnblogs.com/ ...
EXTJS制作的嵌套表格实例(点击一行,展开下面的子表) -
xlshlr:
code.php在哪????貌似么有找到这个文件
ExtJS带验证码登录框[新增回车提交] -
langfeng123ac:
二货,这种写法本地又不行,本地有图片,服务器上又没图片。。浪费 ...
JQUERY+ASP.NET的AJAX文件上传(含Demo) -
553718707:
楼主有没有解决方法啊?
EXTJS制作的嵌套表格实例(点击一行,展开下面的子表) -
553718707:
这个代码对于,子表格的列数很多的时候会出现子表格的列与数据行错 ...
EXTJS制作的嵌套表格实例(点击一行,展开下面的子表)
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,并且一棵是用静态文件作为数据源,一棵是动态生成的数据源:
/*
* 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>
发表评论
-
浅谈Coolite 方法调用
2009-06-13 08:24 2879今天需要做个复选框删除,碰到了一个小难题,然后我一通乱写,居然 ... -
ExtJS Loading 悬浮层
2009-06-08 11:45 4219<!DOCTYPE html PUBLIC &q ... -
Ext中TreePanel控件和TabPanel控件搭配测试
2009-03-23 08:58 2647在实际的项目中,左边树形菜单,提供各种功能点击,右边一个面板, ... -
ExtJs grid使用详细[转]
2009-03-08 21:36 89392008-11-20 09:09 Ext ... -
ExtJS带验证码登录框[新增回车提交]
2009-03-08 21:29 7030/** 用户带验证码登 ... -
ExtJs2.0学习系列(14)--Ext.TreePanel之第三式(可增删改的树)
2009-03-04 19:28 1449继续tree的learn! 今天就来个可增删改的树吧,操作数 ... -
extjs中 combobox级联
2009-03-04 19:13 7336关键字: extjs, combobox, 级 ... -
ext动态新增一行之二
2009-03-03 10:39 1441ext 动态 新增行 新增一行(2)------------- ... -
ext动态新增一行
2009-03-03 10:37 1561ext 动态 新增行 新增一行(1)------------- ... -
ext表单之高级选项
2009-03-03 10:36 1163ext表单之高级选项--------------------- ... -
ext实现标签式浏览内容
2009-03-03 10:31 1507Ext.onReady(function(){ E ... -
ext异步树加入子节点事件
2009-03-03 10:30 2144extext异步树加入子节点 ... -
实现Ext combox 动态数据加载
2009-03-02 20:37 2479核心代码如下:(注意名称的对应!) 服务器生成的json数据形 ... -
解决TreeNode.reload()失效的办法
2009-03-02 20:36 3881Ext Api文档里面 TreeNode.reload()是没 ... -
Ext2.0的通用grid包括(增、删、改、查、导出excel)
2009-03-02 20:32 2862下面为扩张grid的 代码/** * @a ... -
ext构造自己的组件
2009-03-02 20:16 1331/*** @title:新闻中心模块* @au ... -
Ext.Window
2009-02-28 17:19 2117var winUpload = new Ext.Window( ... -
ExtJs中的树分析及实现
2009-02-27 18:12 2296<网上抄录> 首先我们来看日志分类树,这一部分我将 ... -
扩展EXTJS框架的内容检查
2009-02-27 10:36 1058Ext.apply(Ext.form.VTyp ... -
刚写的B/S高级查询界面(基于ExtJs框架)
2009-02-26 10:16 4175这几天赶着做一个B/S系统,基于ExtJs框架,从中学了不少东 ...
相关推荐
Ext JS4学习教程+笔记(一) Ext JS4学习教程+笔记(二)事件处理 ...Ext JS4学习教程+笔记(七)树面板Tree Panel Ext JS4学习教程+笔记(三)Ajax请求 Ext JS4学习教程+笔记(五)Form Panel的使用 Ext学习网址
最后,`extjs学习笔记三[Ext+json+jsp构建的动态树].mht`可能涵盖了一个基于EXT JS、JSON和JSP(Java Server Pages)构建动态树的教程。JSP通常用于动态生成HTML页面,而在这个案例中,它可能被用来生成JSON数据,...
对于动态树型结构,`Ext.tree.AsyncTreeNode`扮演着重要角色。如果一个节点没有`leaf:true`属性,那么当用户展开该节点时,Ext会通过树面板(`treepanel`)的加载器去向服务器请求数据,通常用于动态加载子节点。请求...
### ExtJS 学习笔记概览 #### 一、ExtJS 入门 **1.1 ExtJS 构成及如何引用** ExtJS 是一款基于 JavaScript 的开源框架,专为 Web 应用程序的前端界面设计。其核心优势在于提供了一套丰富的 UI 组件和强大的数据...
ExtJS4学习笔记(十五)---Ext.data.Model ExtJS4学习笔记(十六)---Combobox三级联动 ExtJS4学习笔记(十四)--- ComponentQuery ExtJS4学习笔记(四)---Grid的使用 Extjs4开发笔记(三)——菜单的实现 Extjs4开发笔记(二)...
这篇文档是针对初学者的Ext学习笔记,涵盖了JavaScript、CSS、数据库权限管理、JSP编码问题以及Flex/MXML等多个IT领域的基础知识。以下是这些知识点的详细解释: 1. JavaScript中的`replaceAll`方法:在JavaScript...
7. **EXT_JS实用开发指南**:`EXT_JS实用开发指南_个人整理笔记.docx`可能是作者的个人学习心得,其中包含了实践中遇到的问题和解决方案,对于初学者来说,这样的经验分享非常有价值。 8. **PDF和TXT文档**:`extjs...
ExtJS是一个开源的JavaScript库,主要用于...通过本笔记的学习,可以掌握ExtJS在前端开发中的应用,理解各个组件和管理器的使用方法,以及一些针对特定浏览器的布局技巧,为创建美观、高效的用户界面打下坚实的基础。
因为前段时间有两个专案要用到extjs技术,所以自己学了一段时间,在专案才发现extjs的强大,无论对于开发者还是使用者他都是一场视觉盛宴,这里有我从学习开始做的一些笔记和例子也有自己收集的学习资料,里面包括...
本文将基于标题“入门基础学习 ExtJS笔记(一)”和描述,介绍ExtJS的基础知识,特别是如何创建一个基本的界面框架。 首先,要使用ExtJS,我们需要引入必要的CSS样式表和JavaScript库。在HTML文件中,我们看到引用...
2. **核心组件文件**:在开发过程中,我们可能需要引用特定的组件库,如`ext-grid.js`(表格组件)、`ext-form.js`(表单组件)、`ext-tree.js`(树形组件)等。这些文件提供了构建用户界面所需的组件,例如数据网格...
常见文件系统类型包括ext2/3/4、JFFS2、YAFFS等,选择时要考虑稳定性、空间效率和擦写耐久性。 六、设备驱动程序 设备驱动程序是操作系统与硬件之间的桥梁,使得操作系统可以控制硬件设备。在嵌入式Linux中,编写或...
6. **文件系统构建**:嵌入式Linux的文件系统可以是基于ramdisk、JFFS2、YAFFS、FAT或ext4等格式。开发者需要创建包含所需应用程序、库和配置文件的文件系统映像。 7. **Bootloader**:Bootloader是启动过程中的第...
6. **PDF和DOC文档**:这两种格式的文档可能是教程或笔记,它们可能包含了作者的学习心得、实例代码和解决方案,便于读者理解并应用到实际项目中。 7. **CHM文件**:这是一种Windows的帮助文件格式,通常包含索引和...