Ext开发指南

本文详细介绍了EXTJS框架的下载、使用方法以及各组件的使用,包括基本组件、工具栏组件、表单和元素组件。EXTJS的组件创建通常涉及配置属性,如title、width、height等,并可以通过renderTo指定渲染位置。文章还讨论了组件的事件处理机制,展示了如何添加事件监听器。此外,文章提到了EXTJS的面板、工具栏、数据存储与数据读取器的概念,以及树形控件的使用,包括动态加载子节点和事件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EXT开发指南

官方中文教程:http://extjs.org.cn/node/846

目 录

一、 EXTJS框架下载: 2

二、 EXTJS使用… 2

  1.  页面引用... 2
    
  2.  ExtJS 调用... 2
    
  3.  组件体系下图所示:... 3
    
  1.  组件的使用... 4
    
  2.  组件的配置属性... 5
    

三、 各功能组件使用方法及介绍… 10

  1.  面板Panel 10
    
  2.  窗口Ext.Window.. 14
    
  3.  布局... 19
    
  4.  表格... 26
    
  5.  数据存储Store. 37
    
  6.  树控件... 42
    

一、 EXTJS框架下载:
下载地址:http://www.sencha.com/ 或者 http://www.extjs.com

二、 EXTJS使用

  1.     页面引用
    
  1.     ExtJS 调用
    

在ExtJS 库文件及页面内容加载完后,ExtJS 会执行Ext.onReady 中指定的函数,程序的代码大致如下:

fn 也可以写成一个匿名函数的形式,因此上面的代码可以改成下面的形式:

进一步,我们可以在页面上显示一个窗口,代码如下:

  1.     组件体系下图所示:
    

组件大致可以分成三大类,即基本组件、工具栏组件、表单及元素组件。

基本组件有:

xtype Class

box Ext.BoxComponent 具有边框属性的组件

Button Ext.Button 按钮

colorpalette Ext.ColorPalette 调色板

component Ext.Component 组件

container Ext.Container 容器

dataview Ext.DataView 数据显示视图

datepicker Ext.DatePicker 日期选择面板

editor Ext.Editor 编辑器

editorgrid Ext.grid.EditorGridPanel 可编辑的表格

grid Ext.grid.GridPanel 表格

paging Ext.PagingToolbar 工具栏中的间隔

panel Ext.Panel 面板

progress Ext.ProgressBar 进度条

splitbutton Ext.SplitButton 可分裂的按钮

tabpanel Ext.TabPanel 选项面板

treepanel Ext.tree.TreePanel 树

viewport Ext.ViewPort 视图

window Ext.Window 窗口

工具栏组件有

toolbar Ext.Toolbar 工具栏

tbbutton Ext.Toolbar.Button 按钮

tbfill Ext.Toolbar.Fill 文件

tbitem Ext.Toolbar.Item 工具条项目

tbseparator Ext.Toolbar.Separator 工具栏分隔符

tbspacer Ext.Toolbar.Spacer 工具栏空白

tbsplit Ext.Toolbar.SplitButton 工具栏分隔按钮

tbtext Ext.Toolbar.TextItem 工具栏文本项

表单及字段组件包含

form Ext.FormPanel Form 面板

checkbox Ext.form.Checkbox checkbox 录入框

combo Ext.form.ComboBox combo 选择项

datefield Ext.form.DateField 日期选择项

field Ext.form.Field 表单字段

fieldset Ext.form.FieldSet 表单字段组

hidden Ext.form.Hidden 表单隐藏域

htmleditor Ext.form.HtmlEditor html 编辑器

numberfield Ext.form.NumberField 数字编辑器

radio Ext.form.Radio 单选按钮

textarea Ext.form.TextArea 区域文本框

textfield Ext.form.TextField 表单文本框

timefield Ext.form.TimeField 时间录入项

trigger Ext.form.TriggerField 触发录入项

  1.     组件的使用
    

组件可以直接通过new 关键子来创建,比如控件一个窗口,使用new Ext.Window(),创建一个表格则使用new Ext.GridPanel()。当然,除了一些普通的组件以外,一般都会在构造函数中通过传递构造参数来创建组件。

组件的构造函数中一般都可以包含一个对象,这个对象包含创建组件所需要的配置属性及值,组件根据构造函数中的参数属性值来初始化组件。比如下面的例子:

var obj={title:“hello”,width:300,height:200,html:‘Hello,open source’};

var panel=new Ext.Panel(obj);

panel.render(“hello”);

可以省掉变量obj,直接写成如下的形式:

var panel=new Ext.Panel({title:“hello”,width:300,height:200,html:‘

Hello,easyjf open source

’});

panel.render(“hello”);

render 方法后面的参数表示页面上的div 元素id,也可以直接在参数中通过renderTo 参数来省略手动调用render 方法,只需要在构造函数的参数中添加一个renderTo 属性即可

var panel=new Ext.Panel({renderTo:“hello”,title:“hello”,width:300,height:200,html:‘

Hello, open source

’});

对于容器中的子元素组件,都支持延迟加载的方式创建控件,此时可以直接通过在需要父组件的构造函数中,通过给属性items 传递数组方式实现构造。如下面的代码:

var panel=new Ext.TabPanel(

{width:300,height:200,items:[{title:“面板1”,height:30},{title:“面板2”,height:30},{title:“面板3”,height:30}]}

);

panel.render(“hello”);

注意中括号中加粗部份的代码,这些代码定义了TabPanel 这个容器控件中的子元素,这里包括三个面板。上面的代码与下面的代码等价:

var panel=new Ext.TabPanel(

{width:300,height:200,items:[

new Ext.Panel( {title:“面板1”,height:30}),new Ext.Panel({title:“面板2”,height:30}),new Ext.Panel({title:“面板3”,height:30})

]});

panel.render(“hello”);

上两处代码,前者不但省略掉了new Ext.Panel 这个构造函数,最重要前者只有在初始化TabPanel 的时候,才会创建子面板,而第二种方式则在程序一开始就会创建子面板。也就是说,前者实现的延迟加载。

  1.     组件的配置属性
    

在ExtJS 中,除了一些特殊的组件或类以外,所有的组件在初始化的时候都可以在构造函数使用一个包含属性名称及值的对象,该对象中的信息也就是指组件的配置属性。

比如配置一个面板:

Var a=new Ext.Panel({

title:“面板”,

html"面板内容",

height:100}

);

创建一个按钮:

var b=new Ext.Button({

text:“添加”,

pressed:true,

heigth:30,

handler:Ext.emptyFn

});

创建一个Viewport 及其中的内容:

new Ext.Viewport({

layout:“border”,

items:[{region:“north”,

title:“面板”,

html:“面板内容”,

height:100},

{region:“center”,

xtype:“grid”,

title:“学生信息管理”,

store:troe,

cm:colM,

store:store,

autoExpandColumn:3

}

]

});

每一个组件除了继承基类中的配置属性以外,还会根据需要增加自己的配置属性,另外子类中有的时候还会把父类的一些配置属性的含义及用途重新定义。

学习及使用ExtJS,其中最关键的是掌握ExtJS 中的各个组件的配置属性及具体的含义,这些配置属性在下载下来的ExtJS 源码文档中都有详细的说明,可以通过这个文档详细了解每一个组件的特性。

由于所有的组件都继承自Ext.Component,因此在这里我们列出组件基类Component 中的配置属性简单介绍。

配置属性 名称 类型简介

allowDomMove

Boolean

当渲染这个组件时是否允许移动Dom节点(默认值为true)。

applyTo

Mixed

混合参数,表示把该组件应用指定的对象。参数可以是—节点的id,一个DOM节点或一个存在的元素或与之相对应的在document中已出现的id。当使用applyTo,也可以提供一个id或CSS的class名称,如果子组件允许它将尝试创建一个。如果指写applyTo选项,所有传递到renderTo方法的值将被忽略,并且目标元素的父节点将自动指定为这个组件的容器。使用applyTo选项后,则不需要再调用render()方法来渲染组件。

autoShow

Boolean

自动显示,如为true,则组件将检查所有隐藏类型的class(如:”x-hidden”或”x-hide-display”并在渲染时移除(默认为false)。

cls

String

给组件添加额外的样式信息,(默认值为’’),如果想自定义组件或它的子组件的样式,这个选项是非常有用的。

ctCls

String

给组件的容器添加额外的样式信息,默认值为’’)。

disabled

Class

String 给被禁用的组件添加额外的CSS样式信息,(默认为"x-item-disabled")。

hideMode

String

组件的隐藏方式, 支持的值有”visibility” , 也就是css 里的visibility,”offsets”负数偏移位置的值和”display”也就是css里的display,默认值为”display”。

hideParent

Boolean

是否隐藏父容器,该值为true时将会显示或隐藏组件的容器,false时则只隐藏和显示组件本身(默认值为false)。

id

String

组件的id,默认为一个自动分配置的id。

listeners

Object

给对象配置多个事件监听器,在对象初始化会初始化这些监听器。

plugins

Object/Array

一个对象或数组,将用于增加组件的自定义功能。一个有效的组件插件必须包含一个init方法,该方法可以带一个Ext.Component类型参数。当组件建立后,如果该组件包含有效的插件,将调用每一个插件的init方法,把组件传递给插件,插件就能够实现对组件的方法调用及事件应用等,从而实现对组件功能的扩充。

renderTo

Mixed

混合数据参数,指定要渲染到节点的id,一个DOM的节点或一个已存在的容器。如果使用了这个配置选项,则组件的render()就不是必需的了。

stateEvents

Array

定义需要保存组件状态信息的事件。当指定的事件发生时,组件会保存它的状态(默认为none),其值为这个组件支持的任意event类型,包含组件自身的或自定义事件。(例如:[“click”,”customerchange”])。

stateId

String

组件的状态ID,状态管理器使用该id来管理组件的状态信息,默认值为组件的id。

style

String

给该组件的元素指定特定的样式信息,有效的参数为Ext.Element.applyStyles中的值。

xtype

String

指定所要创建组件的xtype,用于构造函数中没有意义。该参数用于在容器组件中创建创建子组件并延迟实例化和渲染时使用。如果是自定义的组件,则需要用Ext.ComponentMgr.registerType来进行注册,才会支持延迟实例化和渲染。

el

Mixed

相当于applyTo

ExtJS 提供了一套强大的事件处理机制,通过这些事件处理机制来响应用户的动作、监控控件状态变化、更新控件视图信息、与服务器进行交互等等。事件统一由Ext.EventManager 对象管理,与浏览器W3C 标准事件对象Event 相对应,Ext 封装了一个Ext.EventObject 事件对象。支持事件处理的类(或接口)为Ext.util.Observable,凡是继承该类的组件或类都支持往对象中添加事件处理及响应功能。

首先我们来看标准html 中的事件处理,看下面的html 代码:

点击这个按钮则会触发onclick 事件,并执行onclick 事件处理函数中指定的代码,这里直接执行函数a 中的代码,也即弹出一个简单的信息提示框。再简单修改一下上面的代码,

内容如下:

上面的代码在文档加载的时候,就直接对btnAlert 的onclick 赋值,非常清晰的指明了

按钮btnAlert 的onclick 事件响应函数为a,注意这里a 后面不能使用括号”()”。

ExtJS 中组件的事件处理跟上面相似,看下面的代码:

Ext.get(“btnAlert”)得到一个与页面中按钮btnAlert 关联的Ext.Element 对象,可以直接调用该对象上的addListener 方法来给对象添加事件,同样实现前面的效果。在调用addListener方法的代码中,第一个参数表示事件名称,第二个参数表示事件处理器或整个响应函数。

ExtJS 支持事件队列,可以往对象的某一个事件中添加多个事件响应函数,看下面的代码:

Ext.onReady(function(){

Ext.get(“btnAlert”).on(“click”,a);

Ext.get(“btnAlert”).on(“click”,a);

});

addLinster 方法的另外一个简写形式是on,由于调用了两次addListener 方法,因此当点击按钮的时候会弹出两次信息。

当然,ExtJS 还支持事件延迟处理或事件处理缓存等功能,比如下面的代码:

Ext.onReady(function(){
Ext.get(“btnAlert”).on(“click”,a,this,{delay:2000});
});

当然,在使用Ext 的事件时,我们一般是直接在控件上事件,每一个控件包含哪些事件,在什么时候触发,触发时传递的参数等,在ExtJS 项目的文档中都有较为详细的说明。比如对于所有的组件Component,都包含一个beforedestroy 事件,该事件会在Ext 销毁这一个组件时触发,如果事件响应函数返回false,则会取消组件的销毁操作。

Ext.onReady(function(){

var win=new Ext.Window({

title:“不能关闭的窗口”, height:200, width:300

});

win.on(“beforedestroy”,function(obj){

alert(“想关闭我,这是不可能的!”);

obj.show();

return false;

});

win.show();});

由于在窗口对象的beforedestroy 事件响应函数返回值为false,因此执行这段程序,你会发现这个窗口将无法关闭。

组件的事件监听器可以直接在组件的配置属性中直接声明,如下面的代码与前面实现的功能一样:

Ext.onReady(function(){

var win=new Ext.Window({

title:“不能关闭的窗口”,

height:200, width:300,

listeners:{“beforedestroy”:function(obj){

alert(“想关闭我,这是不可能的!”);

obj.show(); return false;

}}

});

win.show();});

三、 各功能组件使用方法及介绍

  1.     面板Panel
    

面板Panel 是ExtJS 控件的基础,很高级控件都是在面板的基础上扩展的,还有其它大多数控件也都直接或间接有关系。应用程序的界面一般情况下是由一个一个的面板通过不同组织方式形成。

面板由以下几个部分组成,一个顶部工具栏、一个底部工具栏、面板头部、面板尾部、面板主区域几个部分组件。面板类中还内置了面板展开、关闭等功能,并提供一系列可重用的工具按钮使得我们可以轻松实现自定义的行为,面板可以放入其它任何容器中,面板本身是一个容器,它里面又可以包含各种其它组件。

Ext.onReady(function(

说在前头的 1. 闪烁吧!看看extjs那些美丽的例子。 1.1. 一切从extjs发布包开始 1.2. 看看ext-2.0.2的文档 1.3. 为什么有的例子必须放在服务器上才能看到效果? 1.4. 为什么自己按照例子写的代码,显示出来总找不到图片 1.5. 我们还需要什么? 1.6. 入门之前,都看helloworld。 1.6.1. 直接使用下载的发布包 1.6.2. 只把必要的东西放进项目中 2. 震撼吧!让你知道ext表格控件的厉害。 2.1. 功能丰富,无人能出其右 2.2. 让我们搞一个grid出来耍耍吧。 2.3. grid默认自带的功能 2.4. 按顺序,咱们先要把常见功能讲到 2.4.1. 自主决定每列的宽度 2.4.2. 让grid支持按列排序 2.4.3. 中文排序是个大问题 2.5. 让单元格里显示红色的字,图片,按钮,你还能想到什么? 2.6. 更进一步,自动行号和多选checkbox 2.6.1. 自动行号 2.6.2. 全选checkbox的时间了,请允许我让2.0先上场。 2.7. 分页了吗?分页了吗?如果还没分就看这里吧。 2.7.1. 表面工作,先把分页工具条弄出来。 2.7.2. 自定义分页工具条 2.7.3. 迫不得已,要加上后台脚本了。 2.7.4. 其实分页不一定要踩在脚下,也可以顶在头上。 2.7.5. 谣言说ext不支持前台排序 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.1.1. 小插曲:只能看不能动的PropertyGrid。 2.10.1.2. 小舞曲:强制对name列排序 2.10.1.3. 小夜曲:根据name获得value 2.10.1.4. 奏鸣曲:自定义编辑器 2.10.2. 分组表格,嘻嘻,这是交叉报表吗? 2.11. 午夜怪谈,论可以改变大小,可以拖拽的表格 2.11.1. 先看看怎么拖拽改变表格的大小 2.11.2. 再看怎么在表格里拖动行 2.11.2.1. 无用功 之 同一个表格里拖拽 2.11.2.2. 无间道 之 从这个表格拖到另一个表格 2.11.2.3. 无疆界 之 从表格里拖到树上 2.12. 大步流星,后台排序 2.13. grid与右键菜单 3. 歌颂吧!只为了树也要学ext。 3.1. 真的,我是为了树,才开始学ext的。 3.2. 传统是先做出一棵树来。 3.3. 超越一个根 3.4. 对tree进行统一配置 3.5. 这种装配树节点的形式,真是让人头大。 3.5.1. TreeLoader外传 之 JsonPlugin 3.5.2. TreeLoader外传 之 读取本地json 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. 裟椤双树,常与无常 3.10. 树形过滤器TreeFilter 3.11. TreeSorter对树形排序 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.7.6. 使用后台返回的校验信息 4.8. 关于表单内部控件的布局问题 4.8.1. 什么都不做,默认的平铺布局 4.8.2. 分裂,分列 4.8.3. fieldset是个神奇的东西 4.8.4. 当某一天,需要往form加个图片什么的,该咋办? 4.9. 还要做文件上传哟 4.10. 非想非想,单选框多选框 4.10.1. 多选呢checkbox 4.10.2. 单选呢radio 4.11. 自动把数据填充到form里 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. 向window里加表格 5.4.3. 把form放进对话框里 6. 奔腾吧!让不同的浏览器里显示一样的布局。 6.1. 有了它,我们就可以摆脱那些自称ui设计师的人了。 6.2. ViewPort对整个窗口布局 6.3. 脑袋上有几个标签的tabPanel 6.4. 让布局复杂一点儿 6.5. 向诸位介绍一下各具特色的布局 6.5.1. accordion就是QQ那样的伸缩菜单 6.5.2. CardLayout?其实就是Wizard啦。 6.5.3. 呼呼,TableLayout就是合并行,合并列 7. 低鸣吧!拖拽就像呼吸一样容易。 7.1. 如此拖拽,简直就像与生俱来的本能一样。 7.2. 第一!乱拖。 7.3. 第二!代理proxy和目标target 7.4. yui自远方来,不亦乐乎 7.4.1. Basic,基础 7.4.2. Handles,把手 7.4.3. On Top,总在上边 7.4.4. Proxy,代理 7.4.5. Groups,组 7.4.6. Grid,网格 7.4.7. Circle,圆形 7.4.8. Region,范围 8. 哭泣吧!现在才开始讲基础问题。 8.1. Ext.get 8.2. 要是我们想一下子获得一堆元素咋办? 8.3. DomHelper和Template动态生成html 8.3.1. DomHelper用来生成小片段 8.3.2. 批量生成还是需要Template模板 8.3.3. 醍醐灌顶,功能强劲的模板引擎XTemplate。 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让按钮和菜单结合 8.8. 蓝与灰,切换主题 8.9. 悬停提示 8.9.1. 起初,初始化 8.9.2. 诞生,注册提示 8.9.3. 分支,标签提示 8.9.4. 发展,全局配置 8.9.5. 进化,个体配置 8.10. 灵异事件,Ext.state 8.11. 所谓的事件 8.12. 回头谈一谈Ext里的ajax 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.1.4. DWRProxy和ComboBox 10.2. localXHR让你在不用服务器就玩ajax 10.3. 在form中使用fckeditor 10.4. 健康快乐动起来,fx里的动画效果 10.5. 悄悄的更新网页内容 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脚本没有执行 A.9. 有关grid的一些小问题 A.9.1. 如何让grid总所有的列都支持排序 A.9.2. 修改一个grid的ColumnModel和Store A.9.3. 动态为ds添加参数baseParams A.10. 有关tree的一些小问题 A.10.1. 如何选中树中的某个节点 A.10.2. 刷新树的所有节点 A.10.3. 如果取得json中自定义的属性 A.11. 如何使用input type="image" A.12. Ext.Window中的closeAction A.13. 使用同步ajax B. 修改日志 C. 后记 C.1. 2007年12月5日,迷茫阶段 C.1.1. 仇恨 C.1.2. 反省 C.2. 关于ext与dwr整合部分的讨论 C.3. 怎么看文档附件里的范例 C.4. ext开发计划 D. 贡献者列表 D.1. 感谢[飘]的大力支持 D.2. 感谢[吧啦吧啦]的大力支持 D.3. 感谢[游戏人生]的大力支持 D.4. 感谢[綄帥]的大力支持 D.5. 感谢[葡萄]的大力支持 D.6. 感谢[天外小人]的大力支持 D.7. 感谢[我想我是海]的大力支持 D.8. 还要感谢:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值