EXT基础

ETX系列:

EXT基础

EXT表单

EXT表格

EXT事件

EXT窗口

EXT按钮事件

什么是EXT?

–Ext是一个Ajax框架,可以用来开发带有华丽外观的富客户端应用,使得我们的b/s应用更加具有活力及生命力,提高用户体验。
–Ext是一个用javascript编写,与后台技术无关的前端ajax框架。因此,可以把Ext用在.Net、Java、Php等各种开发语言开发的应用中。

下载EXT2.0

开发人员必备的中文手册

http://extjs.org.cn/node/125

EXT学习以及资源不错的网站

http://extjs.org.cn/

下载好以后解压缩

•adapter :负责将里面提供第三方底层库(包括Ext自带的底层库)映射为Ext所支持的底层库。
•build :压缩后的ext全部源码(里面分类存放)。
•docs : API帮助文档。
•exmaples:提供使用ExtJs技术做出的小实例。
•resources:Ext UI资源文件目录,如CSS、图片文件都存放在这里面。
•source :无压缩Ext全部的源码(里面分类存放) 遵从Lesser GNU (LGPL) 开源的协议。
•ext-all.js :压缩后的Ext全部源码。
•ext-all-debug.js :无压缩的Ext全部的源码(用于调试)。
•ext-core.js :压缩后的Ext的核心组件,包括sources/core下的所有类。
•ext-core-debug.js :无压缩Ext的核心组件,包括sources/core下的所有类。

第一个例子--弹出框

引入文件

<link rel="stylesheet" type="text/css" media="all" href="extjs/resources/css/ext-all.css" /> <script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="extjs/ext-all.js"></script>


说明:

•样式文件为resources/css/ext-all.css
•库文件主要包含两个:adapter/ext/ext-base.js及ext-all.js
•其中ext-base.js是框架基础库,ext-all.js是extjs的核心库。

要加:<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 不然会中文乱码

测试

<script type="text/javascript" language="javascript"> Ext.onReady(function(){ Ext.Msg.alert('系统提示','操作已经成功!'); }); </script>

效果图:

注意:

在进行下一步之前,我们应该为Ext提供它所需要的——空白图片。Ext需要一个1×1像素的透明gif图片,采用不同的方式来拉伸从而填补控件的宽度。我们需要如下定义该图片的路径:

Ext.onReady(function(){

Ext.BLANK_IMAGE_URL = 'resources/images/default/s.gif';

});

您可能会问为什么需要这张图片。Ext的用户界面是依靠CSS的,但是CSS是通过为很多HTML元素提供样式来拼凑出Ext的组件的。唯一能够跨浏览器且保持精准大小的只有图片。所以图片被用来定义Ext组件的如何展现。这是Ext提供浏览器兼容性的一种主要方式。

如果没有这个,会默认从远程extjs.com下载。

获取对象节点

•getDom方法能够得到文档中的DOM节点,该方法中包含一个参数,该参数可以是DOM节点的id、DOM节点对象或DOM节点对应的Ext元素(Element)等。 (与getElementById是一个效果)
•Ext.onReady(function(){

var e=new Ext.Element("hello");

Ext.getDom("hello");

Ext.getDom(e);

Ext.getDom(e.dom);

});
•//Html页面中包含一个id为hello的div,代码如下:

<div id="hello">aaa</div>

Ext.getDom("hello")、Ext.getDom(e)、Ext.getDom(e.dom)等三个语句返回都是同一个DOM节点对象。

绑定

renderto是用来指明控件要渲染的节点的。每一个控件都要指明该控件需要渲染到哪一个DOM节点。

//renderTo: document.body,

renderTo:Ext.getDom("hello"),

新建一个panel

<html> <head><title>Getting Started Example</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <link rel="stylesheet" type="text/css" media="all" href="extjs/resources/css/ext-all.css" /> <script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="extjs/ext-all.js"></script> <script type="text/javascript" language="javascript"> Ext.onReady(function(){ var myPanel=new Ext.Panel({ id:"myFirstPanel", title:"旧的标题", renderTo:"hello", width:300, height:200 }); Ext.getCmp("myFirstPanel").setTitle("新的标题");}); </script> </head> <body> <div id="hello"></div> </body> </html>


效果图:

注释//Ext.getCmp("myFirstPanel").setTitle("新的标题");

再看效果:

•getCmp方法用来获得一个Ext组件,也就是一个已经在页面中初始化了的Component或其子类的对象,getCmp方法中只有一个参数,也就是组件的id。
•getCmp方法其实是Ext.ComponentMgr.get方法的简写形式。

也可以直接在body上增加panel

Ext.onReady(function(){ var myPanel=new Ext.Panel({ id:"myFirstPanel", title:"旧的标题", renderTo:Ext.getBody(), width:300, height:200 });

panel中增加html

Ext.onReady(function(){ var myPanel=new Ext.Panel({ id:"myFirstPanel", title:"标题", renderTo:"hello", width:300, height:200, html:'<br><span>http://blog.csdn.net/21aspnet/</span>' }); });


基本表单

Ext.onReady(function(){ var movie_form = new Ext.FormPanel({ url: 'movie-form-submit.php', renderTo: document.body, frame: true, title: '信息填写', width: 250, items: [{ xtype: 'textfield', fieldLabel: '标题', name: 'title' },{ xtype: 'datefield', fieldLabel: '日期', name: 'released' }] }); });


效果图:

EXT国际化问题(自动翻译为中文)

注意这时是默认英文下的日历,需要翻译为中文环境可以引入:

<script src="extjs/build/locale/ext-lang-zh_CN.js"></script>

说明:该目录也有其他对应语言,各取所需即可。

修改日历格式

{ xtype: 'datefield', fieldLabel: 'Released', width: 250, format:'Y-m-d', name: 'released' }

日历只能选择指定日期:

{ xtype: 'datefield', fieldLabel: 'Released', disabledDays: [6,0], format:'Y-m-d', name: 'released' }

这样除了工作日(周一到周五)以外的周六和周日就不能选择了。一定要记得0代表星期日!

EXT的xtype

xtype指的是Ext.form.TextField。这里罗列出一些xtype:

· textfield 文本框 常用

· timefield 下拉时间框 不常用

· numberfield 只能输入数字 数字验证常用

· datefield 日历下拉框

· combo 下拉框

· textarea 多行文本框

最普通的文本框:

{

xtype: 'textfield',

fieldLabel: 'Title',

name: 'title'

}

带校验功能:

{

xtype: 'textfield',

fieldLabel: 'Title',

name: 'title',

allowBlank: false

}

一种常用的校验是看用户是否输入了任何内容,建立一个allowBlank配置项并把它设置为false。

内置校验——vtype

vtype。它可以被用来校验和约束用户的输入,并且抛出错误的信息。它的基础是正则表达式,现在介绍几种vType:

· email;必须输入邮件

· url;必须输入网址

· alpha;必须输入文字不能是数字

· alphanum。文字+数字

{

xtype: 'textfield',

fieldLabel: 'Director',

name: 'director',

vtype: 'alpha'

}

气球提示:

Ext.onReady(function(){

Ext.QuickTips.init();

// our form here

});

完整的代码:

<html> <head> <title>开始EXT</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" /> <script src="extjs/adapter/ext/ext-base.js"></script> <script src="extjs/ext-all-debug.js"></script> <script src="extjs/build/locale/ext-lang-zh_CN.js"></script> <script type="text/javascript" language="javascript"> Ext.onReady(function(){ Ext.QuickTips.init(); var movie_form = new Ext.FormPanel({ url: 'movie-form-submit.php', renderTo: document.body, frame: true, title: 'Movie Information Form', width: 250, items: [{ xtype: 'textfield', fieldLabel: 'Title', name: 'title', allowBlank: false },{ xtype: 'textfield', fieldLabel: 'Director', name: 'director', vtype: 'alphanum' },{ xtype: 'datefield', fieldLabel: 'Released', name: 'released', disabledDays: [1,2,3,4,5] }] }); }); </script> </head> <body><div id="hello"></div></body> </html>

附:常见验证

ext 默认校验方案
new Ext.form.TextField({ name:'text', fieldLable:'文本框', vtype:'email' }); //alpaha:只能输入英文字母 //alphanum:字母和数字 //email:电子邮箱 //url:网址============================================================================================
最大长度和最小长度

new Ext.form.TextField({
name:'text',
fieldLable:'文本框',
maxLength:10,
minLength:5
});
===================================================================================
输入不能为空
new Ext.form.TextField({
name:'text',
fieldLable:'文本框',
allowBlank:false//验证
});
====================================================================================
自定义验证
new Ext.form.TextField({
fieldLable:'文本框',
name:'text',
regex:/^[\u4E00-\u9FA5]+$/,
regexText:'只能输入汉字'
});
====================================================================================

单选按钮

{ xtype: 'radio', fieldLabel: 'Filmed In', name: 'filmed_in', boxLabel: '选asp.net' },

{ xtype: 'radio', hideLabel: false, labelSeparator: '', name: 'filmed_in', boxLabel: '选php' }

复选框

{ xtype: 'checkbox', fieldLabel: '请选择', name: 'bad_movie' }

下拉框

对于combobox我们也要为它添加配置。

store配置项就是用来说明combo中采用的数据的。

与此同时我们还需要mode配置项,用来说明数据的来源是local source(本地)还是remote source(远程),

还有displayField数据项,用来说明把哪一列数据展现在combo的选项中。

var genres = new Ext.data.SimpleStore({ fields: ['id', 'genre'], data : [['1','北京'],['2','上海'],['3','广州'],['4','南京']] }); Ext.onReady(function(){ Ext.QuickTips.init(); var movie_form = new Ext.FormPanel({ url: 'movie-form-submit.php', renderTo: document.body, frame: true, title: 'Movie Information Form', width: 450, items: [ { xtype: 'combo', name: 'genre', fieldLabel: '请选择', mode: 'local', store: genres, displayField:'genre', width: 120 } ] }); });


HTML编辑器

{ xtype: 'htmleditor', name: 'description', hideLabel: true, labelSeparator: '', height: 100, anchor: '100%' }

下拉菜单Toolbar

说明:

xtype: 'tbbutton',按钮

xtype: 'tbbutton',菜单

菜单的items(项目)和buttons的原理一样。他们可以有图标、样式表,以及句柄。菜单的所有itmes可以组合起来形成一些列可选择的按钮

xtype: 'tbsplit',分割菜单

就是按钮和菜单的结合。在使用它的时候只要在menu配置项目中添加按钮的属性就可以了。点击按钮左边部分可以触发按钮本身的事件,点击按钮右边的部分(有个倒三角)可以展开菜单。

Ext.onReady(function(){ new Ext.Toolbar({ renderTo: document.body, items: [{ xtype: 'tbbutton', text: 'Button' },{ xtype: 'tbbutton', text: 'Menu Button', menu: [{ text: 'Better' },{ text: 'Good' },{ text: 'Best' }] },{ xtype: 'tbsplit', text: 'Split Button', menu: [{ text: 'Item One' },{ text: 'Item Two' },{ text: 'Item Three' }] }] }); });


折叠控件

Ext.onReady(function(){ new Ext.Panel({ renderTo:"hello", title:"容器组件", width:500, height:200, layout:"accordion", layoutConfig: { animate: true }, items:[{title:"子元素1",html:"这是子元素1中的内容"}, {title:"子元素2",html:"这是子元素2中的内容"}, {title:"子元素3",html:"这是子元素3中的内容"} ] } ); });


Accordion布局由类Ext.layout.Accordion定义,名称为accordion,表示可折叠的布局,也就是说使用该布局的容器组件中的子元素是可折叠的形式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 闪烁吧!看看extjs那些美丽的例子。 1.1. 一切从extjs发布包开始 1.2. 看看ext-1.1.1的文档 1.3. 看看ext-2.0的文档 1.4. 为什么有的例子必须放在服务器上才能看到效果? 1.5. 为什么自己按照例子写的代码,显示出来总找不到图片 1.6. 我们还需要什么? 1.7. 入门之前,都看helloworld。 1.7.1. 直接使用下载的发布包 1.7.2. 只把必要的东西放进项目中 2. 震撼吧!让你知道ext表格控件的厉害。 2.1. 功能丰富,无人能出其右 2.2. 让我们搞一个grid出来耍耍吧。 2.3. 上边那个是1.x的,2.0稍微有些不同哦 2.4. 按顺序,咱们先要把常见功能讲到 2.4.1. 自主决定每列的宽度 2.4.2. 让grid支持按列排序 2.5. 让单元格里显示红色的字,图片,按钮,你还能想到什么? 2.6. 更进一步,自动行号和多选checkbox 2.6.1. 自动行号 2.6.2. 全选checkbox的时间了,请允许我让2.0先上场。 2.6.3. 1.x时代的全选checkbox。 2.7. 分页了吗?分页了吗?如果还没分就看这里吧。 2.7.1. 表面工作,先把分页工具条弄出来。 2.7.2. 2.0赐予我们更大的灵活性 2.7.3. 迫不得已,要加上后台脚本了。 2.7.4. 其实分页不一定要踩在脚下,也可以顶在头上。 2.8. 爱生活,EditorGrid。 2.8.1. 旋动舞步,看我们怎么把这个EditorGrid炫出来。 2.8.2. 添加一行,再把它踢掉 2.8.3. 一切就绪,你可以按保存按钮了。 2.8.4. 天马行空,保证提交的数据绝对有效 2.8.5. 限制类型,让用户只能选择我们提供的数据 2.9. 连坐法,关于选择模型 2.10. 2.0有,1.x里没有的那些可怕的控件 2.10.1. 谓之曰PropertyGrid属性表格 2.10.2. 分组表格,嘻嘻,这是交叉报表吗? 2.11. 午夜怪谈,论可以改变大小,可以拖拽的表格 2.11.1. 先看看怎么拖拽改变表格的大小 2.11.2. 再看怎么在表格里拖动行 2.11.2.1. 无用功 之 同一个表格里拖拽 2.11.2.2. 无间道 之 从这个表格拖到另一个表格 2.11.2.3. 无疆界 之 从表格里拖到树上 3. 歌颂吧!只为了树也要学ext。 3.1. 真的,我是为了树,才开始学ext的。 3.2. 传统是先做出一棵树来。 3.3. 超越一个根 3.4. 你不会认为2.0里跟1.x是一样的吧? 3.5. 这种装配树节点的形式,真是让人头大。 3.6. jsp的例子是一定要有的 3.7. 让你知道树都可以做些什么 3.7.1. 检阅树形的事件 3.7.2. 右键菜单并非单纯的事件 3.7.3. 默认图标好单调,改一下撒 3.7.4. 偷偷告诉你咋从节点弹出对话框 3.7.5. 小小提示 3.7.6. 给树节点设置超链接 3.8. 灰壳显灵!让我直接修改树节点的名称吧! 3.9. 我拖,我拖,我拖拖拖。 3.9.1. 树形节点的拖拽有三种形式 3.9.2. 用事件控制拖拽 3.9.2.1. 叶子不能append 3.9.2.2. 把节点扔到哪里啦 3.9.2.3. 裟椤双树,常与无常 4. 祝福吧!把表单和输入控件都改成ext的样式。 4.1. 不用ext的form啊,不怕错过有趣的东西吗? 4.2. 慢慢来,先建一个form再说 4.3. 胡乱扫一下输入控件 4.4. 起点高撒,从comboBox往上蹦 4.4.1. 凭空变出个comboBox来。 4.4.2. 把select变成comboBox。 4.4.3. 破例研究下comboBox的内在本质哟 4.4.4. 嘿嘿~本地的做完了,试试远程滴。 4.4.5. 给咱们的comboBox安上零配件 4.4.6. 每次你选择什么,我都知道 4.4.7. 露一小手,组合上面所知,省市县三级级联。哈哈~ 4.4.7.1. 先做一个模拟的,所有数据都在本地 4.4.7.2. 再做一个有后台的,需要放在服务器上咯 4.5. 把form里的那些控件全部拿出来看看 4.6. form提交数据的三重门 4.6.1. ext中默认的提交形式 4.6.2. 使用html原始的提交形式 4.6.3. 单纯ajax 4.7. 验证苦旅 4.7.1. 不能为空 4.7.2. 最大长度,最小长度 4.7.3. 借助vtype 4.7.4. 自定义验证规则 4.7.5. 算不上校验的NumberField 4.8. 关于表单内部控件的布局问题 4.8.1. 什么都不做,默认的平铺布局 4.8.2. 分裂,分列 4.8.2.1. 分裂,分列。1.x 4.8.2.2. 分裂,分列。2.0 4.8.3. fieldset是个神奇的东西 4.8.4. 当某一天,需要往form加个图片什么的,该咋办? 4.9. 还要做文件上传哟 4.10. 非想非想,单选框多选框 4.10.1. 多选呢checkbox 4.10.2. 单选呢radio 5. 雀跃吧!超脱了一切的弹出窗口。 5.1. 呵呵~跳出来和缩回去总给人惊艳的感觉。 5.2. 先看看最基本的三个例子 5.2.1. Ext.MessageBox.alert() 5.2.2. Ext.MessageBox.confirm() 5.2.3. Ext.MessageBox.prompt() 5.3. 如果你想的话,可以控制得更多 5.3.1. 可以输入多行的输入框 5.3.2. 再看一个例子呗 5.3.3. 下一个例子是进度条 5.3.4. 动画效果,跳出来,缩回去 5.4. 让弹出窗口,显示我们想要的东东,比如表格 5.4.1. 2.0的弹出表格哦 5.4.2. 向2.0的window里加表格 5.4.3. 1.x里的叫做BasicDialog 5.4.4. 把form放进对话框里 6. 奔腾吧!让不同的浏览器里显示一样的布局。 6.1. 有了它,我们就可以摆脱那些自称ui设计师的人了。 6.2. 关于BorderLayout 6.3. 嗯,不如再看看附加效果 6.3.1. 先看看split 6.3.2. 再试试titlebar 6.3.3. 还不够,还不够,让四周的区域可以缩起来 6.3.4. 给这些区域都加上个关闭按钮 6.3.5. 用NestedLayoutPanel在五块中再进行分割,实现更复杂的布局 6.4. 2.0的ViewPort是完全不同的实现 6.5. 脑袋上有几个标签的tabPanel 6.6. 让布局复杂一点儿 7. 低鸣吧!拖拽就像呼吸一样容易。 7.1. 如此拖拽,简直就像与生俱来的本能一样。 7.2. 第一!乱拖。 7.3. 第二!代理proxy和目标target 8. 哭泣吧!现在才开始讲基础问题。 8.1. Ext.get 8.2. 要是我们想一下子获得一堆元素咋办? 8.3. DomHelper和Template动态生成html 8.3.1. DomHelper用来生成小片段 8.3.2. 批量生成还是需要Template模板 8.4. Ext.data命名空间 8.4.1. proxy系列 8.4.1.1. 人畜无害的MemoryProxy 8.4.1.2. 常规武器HttpProxy 8.4.1.3. 洲际导弹ScriptTagProxy 8.4.2. reader系列 8.4.2.1. 简单易行ArrayReader 8.4.2.2. 灵活轻便JsonReader 8.4.2.3. 久负盛名XmlReader 8.4.3. 相信你知道怎么做加法 8.5. 跟我用json,每天五分钟 8.5.1. Hello 老爸。 8.5.2. 老妈等等,孩子先上场。 8.5.3. 老妈来了,老妈来啦。 8.5.4. Ext对json的支持力度 8.5.5. 反向操作,ext把json变成字符串 8.6. 小声说说scope 8.7. 菜单和工具条 8.7.1. 至简至廉的菜单 8.7.2. 丰富一点儿的多级菜单 8.7.3. 单选多选,菜单里搞这套 8.7.4. 小把戏,定制好的菜单 8.7.5. SplitButton让按钮和菜单结合 9. 沉寂吧!我们要自己的控件。 9.1. 下拉树形选择框TreeField 9.2. 带全选的checkbox树形CheckBoxTree 9.3. 带全选的checkbox的grid 9.4. fisheye 9.5. 可以设置时间的日期控件 9.6. JsonView实现用户卡片拖拽与右键菜单 9.7. 下拉列表选择每页显示多少数据 10. 撕裂吧!邪魔外道与边缘学科。 10.1. dwr与ext整合 10.1.1. 无侵入式整合dwr和ext 10.1.2. DWRProxy 10.1.3. DWRTreeLoader 10.2. localXHR让你在不用服务器就玩ajax 10.3. 在form中使用fckeditor A. 常见问题乱弹 A.1. ext到底是收费还是免费 A.2. 怎么查看ext2里的api文档 A.3. 如何在页面中引用ext A.3.1. 顺便说说常见的Ext is not defined错误 A.4. 想把弹出对话框单独拿出来用的看这里 A.5. 想把日期选择框单独拿出来用的看这里 A.6. 听说有人现在还不会汉化ext A.7. 碰到使用ajax获得数据,或者提交数据出现乱码 A.8. TabPanel使用autoLoad加载的页面中的js脚本没有执行 B. 修改日志 C. 后记 C.1. 2007年12月5日,迷茫阶段 C.1.1. 仇恨 C.1.2. 反省 C.2. 关于ext与dwr整合部分的讨论 C.3. 怎么看文档附件里的范例 D. 贡献者列表 D.1. 感谢[飘17804726]的大力支持 D.2. 感谢[吧啦吧啦286556983]的大力支持 D.3. 感谢[游戏人生395181055]的大力支持 D.4. 感谢[綄帥77793603]的大力支持 D.5. 感谢[葡萄5793699]的大力支持 D.6. 感谢[天外小人442540141]的大力支持 D.7. 感谢[我想我是海39893874]的大力支持 D.8. 还要感谢: 来自 family168 网站的的新版extjs教程 说在前头的 1. 闪烁吧!看看extjs那些美丽的例子。 1.1. 一切从extjs发布包开始 1.2. 看看ext-1.1.1的文档 1.3. 看看ext-2.0的文档 1.4. 为什么有的例子必须放在服务器上才能看到效果? 1.5. 为什么自己按照例子写的代码,显示出来总找不到图片 1.6. 我们还需要什么? 1.7. 入门之前,都看helloworld。 1.7.1. 直接使用下载的发布包 1.7.2. 只把必要的东西放进项目中 2. 震撼吧!让你知道ext表格控件的厉害。 2.1. 功能丰富,无人能出其右 2.2. 让我们搞一个grid出来耍耍吧。 2.3. 上边那个是1.x的,2.0稍微有些不同哦 2.4. 按顺序,咱们先要把常见功能讲到 2.4.1. 自主决定每列的宽度 2.4.2. 让grid支持按列排序 2.5. 让单元格里显示红色的字,图片,按钮,你还能想到什么? 2.6. 更进一步,自动行号和多选checkbox 2.6.1. 自动行号 2.6.2. 全选checkbox的时间了,请允许我让2.0先上场。 2.6.3. 1.x时代的全选checkbox。 2.7. 分页了吗?分页了吗?如果还没分就看这里吧。 2.7.1. 表面工作,先把分页工具条弄出来。 2.7.2. 2.0赐予我们更大的灵活性 2.7.3. 迫不得已,要加上后台脚本了。 2.7.4. 其实分页不一定要踩在脚下,也可以顶在头上。 2.8. 爱生活,EditorGrid。 2.8.1. 旋动舞步,看我们怎么把这个EditorGrid炫出来。 2.8.2. 添加一行,再把它踢掉 2.8.3. 一切就绪,你可以按保存按钮了。 2.8.4. 天马行空,保证提交的数据绝对有效 2.8.5. 限制类型,让用户只能选择我们提供的数据 2.9. 连坐法,关于选择模型 2.10. 2.0有,1.x里没有的那些可怕的控件 2.10.1. 谓之曰PropertyGrid属性表格 2.10.2. 分组表格,嘻嘻,这是交叉报表吗? 2.11. 午夜怪谈,论可以改变大小,可以拖拽的表格 2.11.1. 先看看怎么拖拽改变表格的大小 2.11.2. 再看怎么在表格里拖动行 2.11.2.1. 无用功 之 同一个表格里拖拽 2.11.2.2. 无间道 之 从这个表格拖到另一个表格 2.11.2.3. 无疆界 之 从表格里拖到树上 3. 歌颂吧!只为了树也要学ext。 3.1. 真的,我是为了树,才开始学ext的。 3.2. 传统是先做出一棵树来。 3.3. 超越一个根 3.4. 你不会认为2.0里跟1.x是一样的吧? 3.5. 这种装配树节点的形式,真是让人头大。 3.6. jsp的例子是一定要有的 3.7. 让你知道树都可以做些什么 3.7.1. 检阅树形的事件 3.7.2. 右键菜单并非单纯的事件 3.7.3. 默认图标好单调,改一下撒 3.7.4. 偷偷告诉你咋从节点弹出对话框 3.7.5. 小小提示 3.7.6. 给树节点设置超链接 3.8. 灰壳显灵!让我直接修改树节点的名称吧! 3.9. 我拖,我拖,我拖拖拖。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值