第1章 认识ExtJS 1
1.1 ExtJS的精彩表现 1
1.2 ExtJS的前世今生 2
1.3 是否真的需要学习ExtJS 3
1.4 ExtJS UI组件基础 7
1.5 了解一下类似技术 9
1.6 本章小结 12
第2章 让我们开始ExtJS之旅 13
2.1 认识ExtJS的开发包 13
2.2 也从Hello world开始 14
2.3 ExtJS中的基本概念 15
2.4 非常有用的开发工具 17
2.4.1 开发插件spket 17
2.4.2 调试工具 19
2.5 ExtJS对原有JavaScript对象的扩展 21
2.6 本章小结 24
第3章 ExtJS 2.0的基本功能 25
3.1 ExtJS 2.0组件配置说明 25
3.1.1 JSON介绍 25
3.1.2 ExtJS组件配置方式介绍 26
3.2 信息提示框组件基础 27
3.2.1 认识Ext.MessageBox 27
3.2.2 Ext.MessageBox.alert() 29
3.2.3 Ext.MessageBox.confirm() 30
3.2.4 Ext.MessageBox.prompt() 31
3.2.5 Ext.MessageBox.wait() 32
3.2.6 Ext.MessageBox.show() 32
3.2.7 Ext.MessageBox的其他功能 34
3.3 进度条组件介绍 38
3.3.1 认识Ext.ProgressBar 38
3.3.2 手工模式的进度条 40
3.3.3 自动模式的进度条 41
3.3.4 自定义的进度条样式 43
3.4 实现工具栏和菜单栏 43
3.4.1 认识Ext.Toolbar 44
3.4.2 只包含按钮的简单工具栏 44
3.4.3 包含多种元素的复杂工具栏 46
3.4.4 认识Ext.menu.Menu菜单 48
3.4.5 最简单的菜单栏 49
3.4.6 创建二级或多级菜单 50
3.4.7 使用适配器(Ext.menu.Adapter) 51
3.4.8 具有选择框的菜单 52
3.5 本章小结 53
第4章 最常用的表单 54
4.1 表单及表单元素 54
4.1.1 了解Ext.form.BasicForm基本表单 54
4.1.2 认识Ext.form.FormPanel表单面板 56
4.1.3 Ext.form.Field表单字段 58
4.1.4 Ext.form.TextField文本区 60
4.1.5 Ext.form.TextArea多行文本域 62
4.1.6 Ext.form.NumberField数字输入框 63
4.1.7 Ext.form.Checkbox复选框 65
4.1.8 Ext.form.Radio单选框 65
4.1.9 Ext.form.TriggerField触发字段 68
4.1.10 Ext.form.ComboBox组合框 69
4.1.11 Ext.form.TimeField时间选择框 78
4.1.12 Ext.form.DateField日期选择框 80
4.1.13 Ext.form.Hidden隐藏字段 83
4.1.14 Ext.form.HtmlEditor HTML编辑器 84
4.1.15 Ext.form.FieldSet字段集 88
4.2 实现表单验证 89
4.2.1 常见的验证类型 89
4.2.2 表单验证(VType) 90
4.2.3 自定义VType验证 91
4.3 表单的提交和加载 93
4.3.1 Ext.form.Action基础 94
4.3.2 表单数据加载 95
4.3.3 表单数据提交 97
4.4 本章小结 99
第5章 面板及布局类 100
5.1 面板panel 100
5.1.1 认识Ext.Panel 100
5.1.2 Ext.Panel的主要功能 101
5.1.3 使用Ext.Panel 104
5.2 标准布局类 109
5.2.1 ContainerLayout容器布局 109
5.2.2 FitLayout自适应布局 110
5.2.3 AccordionLayout折叠布局 111
5.2.4 CardLayout卡片式布局 112
5.2.5 AnchorLayout锚点布局 114
5.2.6 AbsoluteLayout绝对位置布局 118
5.2.7 FormLayout表单布局 119
5.2.8 ColumnLayout列布局 120
5.2.9 TableLayout表格布局 123
5.2.10 BorderLayout边框布局 124
5.3 使用ViewPort 126
5.4 TabPanel页签 127
5.5 通过布局嵌套实现表单元素横排 131
5.6 本章小结 133
第6章 常用工具类与函数 134
6.1 非常有用的Element元素 134
6.2 Ext常用函数 135
6.2.1 Ext.onReady() 135
6.2.2 Ext.get() 136
6.2.3 Ext.select() 137
6.2.4 Ext.query() 137
6.2.5 Ext.getCmp() 140
6.2.6 Ext.getDom() 141
6.2.7 Ext.isEmpty() 142
6.2.8 Ext.namespace() 143
6.2.9 Ext.each() 143
6.2.10 Ext.apply() 144
6.3 Ext.DomHelper 145
6.3.1 Ext.DomHepler.append 145
6.3.2 Ext.DomHelper.applyStyles() 146
6.3.3 createTemplate() 147
6.3.4 insertAfter() 148
6.3.5 insertBefore() 149
6.3.6 insertFirst() 149
6.3.7 insertHtml() 150
6.3.8 overwrite() 151
6.4 Ext.DomQuery 152
6.4.1 compile() 152
6.4.2 filter() 152
6.4.3 is() 153
6.4.4 select() 153
6.4.5 selectNode() 153
6.5 Ext.util.CSS 154
6.5.1 createStyleSheet() 155
6.5.2 getRule() 155
6.5.3 swapStyleSheet() 155
6.5.4 removeStyleSheet() 157
6.6 Ext.util.ClickRepeater 158
6.6.1 click() 159
6.6.2 mousedown() 159
6.6.3 mouseup() 159
6.7 Ext.util.DelayedTask提供setTimeout的简单替代 160
6.7.1 canelc() 160
6.7.2 delay() 161
6.8 Ext.util.Format提供常用的格式化方法 161
6.8.1 ellipsis() 161
6.8.2 capitalize() 161
6.8.3 date() 162
6.8.4 htmlEncode() 162
6.8.5 htmlDecode() 162
6.8.6 stripTags() 163
6.8.7 substr() 163
6.9 Ext.util.JSON编码和解码Json对象 164
6.9.1 decode() 164
6.9.2 encode() 164
6.10 Ext.util.MixedCollection 165
6.10.1 加入对象到集合 165
6.10.2 将数组中的对象加入集合中 166
6.10.3 移除集合中的对象 166
6.10.4 克隆集合 167
6.10.5 匹配集合中的关联对象 167
6.10.6 迭代集合中的对象调用指定的方法 168
6.10.7 获取集合中的对象 168
6.10.8 类中的其他有用方法 169
6.10.9 类中重要的事件 171
6.11 Ext.util.TaskRunner 172
6.11.1 构造函数 172
6.11.2 启动一个线程start() 173
6.11.3 停止一个线程stop() 173
6.11.4 停止所有的线程stopAll() 173
6.12 Ext.util.TextMetrics得到块状化文本规格 174
6.12.1 块的绑定 174
6.12.2 实例化对象 174
6.12.3 获取文本的高度 175
6.12.4 获取文本的宽、高 175
6.12.5 获取文本的宽度 175
6.12.6 获取指定节点内文本块的宽、高 175
6.12.7 指定文本块的宽 176
6.13 Ext.KeyNav为元素提供简单的按键处理方法 176
6.13.1 实例化一个键盘绑定对象 177
6.13.2 废弃原有键盘绑定 178
6.13.3 使废弃的键盘绑定重新生效 178
6.14 Ext.KeyMap提供更灵活强大的按键的处理方法 178
6.14.1 构造函数 179
6.14.2 给对象添加键盘绑定 179
6.14.3 废弃已绑定到KeyMap的配置 180
6.14.4 使KeyMap或废弃的配置重新生效 180
6.14.5 取当前KeyMap配置是否有效 180
6.14.6 事件绑定函数 181
6.15 本章小结 181
第7章 ExtJS开始响应事件 182
7.1 ExtJS事件与浏览器标准事件的异同 182
7.1.1 事件绑定方式 182
7.1.2 自定义事件 184
7.1.3 跨浏览器事件 185
7.2 ExtJS事件特性 186
7.2.1 Ext.util.Observable(事件基类) 186
7.2.2 事件相关方法举例 188
7.3 Ext.EventObject(事件对象) 189
7.4 Ext.EventManager事件管理器 191
7.5 本章小结 192
第8章 常见Web框架ExtJS改造 193
8.1 常见Web应用框架说明 193
8.2 简易书籍管理系统 193
8.2.1 总体设计 193
8.2.2 数据库设计 193
8.2.3 数据库脚本 194
8.2.4 工程框架设计 195
8.2.5 页面设计 203
8.3 怎样开始 205
8.3.1 页面改造 205
8.3.2 与服务器交互方式的改造 205
8.4 开始改造 205
8.4.1 改造主页面布局 205
8.4.2 改造菜单栏 207
8.4.3 改造书籍维护界面 208
8.4.4 改造书籍新增界面 212
8.4.5 改造书籍修改界面 219
8.4.6 改造书籍删除功能 221
8.5 换肤的实现 223
8.5.1 ExtJS皮肤的安装 223
8.5.2 创建实现换肤功能的自定义组件Ext.ux.ThemeChange 223
8.5.3 修改菜单列表加入换肤组件 224
8.5.4 查看换肤效果 225
8.6 本章小结 225
第9章 ExtJS对Ajax的支持 226
9.1 Ext.Ajax入门 226
9.1.1 Ext.Ajax.request方法详解 226
9.1.2 Ext.Ajax.request操作示例 227
9.2 Ext.Updater基础 232
9.2.1 Ext.Updater相关的其他类 234
9.2.2 Ext.Updater.update方法详解 235
9.2.3 Ext.Updater.update操作示例 235
9.2.4 Ext.Updater其他方法示例 238
9.3 利用Ajax优化Web应用框架 239
9.3.1 多级联动菜单 239
9.3.2 天气情况查询 242
9.3.3 自动保存的网络记事本 246
9.3.4 网页计算器 248
9.4 本章小结 251
第10章 增强型模板 252
10.1 熟悉Ext.Template 252
10.2 Ext.XTemplate基础 256
10.2.1 自动填充数组和作用域切换 256
10.2.2 在子模板中访问父对象 257
10.2.3 数组索引和简单运算支持 258
10.2.4 自动渲染简单数组 259
10.2.5 使用基本的条件逻辑判断 259
10.2.6 在模板中执行任意代码 260
10.2.7 使用模板成员函数 262
10.3 在ExtJS组件中使用模板 263
10.4 使用模板的优势 264
10.5 在Web中使用模板 265
10.6 本章小结 266
第11章 数据模型 267
11.1 ExtJS数据模型基础 267
11.2 Record数据记录 267
11.3 DataProxy数据代理 269
11.3.1 Ext.data.DataProxy 270
11.3.2 Ext.data.HttpProxy 270
11.3.3 Ext.data.MemoryProxy 272
11.3.4 Ext.data.ScriptTagProxy 273
11.4 DataReader数据解析器 275
11.4.1 Ext.data.DataReader 275
11.4.2 Ext.data.JsonReader 275
11.4.3 Ext.data.ArrayReader 278
11.4.4 Ext.data.XmlReader 279
11.5 Store数据集 281
11.5.1 Ext.data.Store 282
11.5.2 Ext.data.SimpleStore 287
11.5.3 Ext.data.JsonStore 288
11.5.4 Ext.data.GroupingStore 289
11.6 自定义DWR数据代理 291
11.7 本章小结 293
第12章 ExtJS组件 294
12.1 Ext.Component组件类 294
12.2 Ext.BoxComponent组件类 297
12.3 Ext.Container组件容器类 298
12.4 Ext表格组件Grid 300
12.4.1 普通表格面板GridPanel 301
12.4.2 表格列模式ColumnModel 303
12.4.3 表格选择模式SelectionModel 308
12.4.4 表格视图GridView 313
12.4.5 可编辑表格面板EditorGridPanel 316
12.4.6 属性表格面板PropertyGrid 318
12.4.7 分组表格视图GroupingView 321
12.4.8 表格分页及其他 323
12.5 Ext树形组件Tree 325
12.5.1 树形面板TreePanel 326
12.5.2 树节点TreeNode 328
12.5.3 树节点UI 334
12.5.4 树选择模式SelectionModel 335
12.5.5 树加载器TreeLoader 338
12.5.6 树编辑器TreeEditor 340
12.5.7 树排序TreeSorter 341
12.6 继承函数Ext.extend 343
12.7 组件功能扩展 344
12.8 使用插件扩展组件功能 346
12.9 自定义组件 348
12.9.1 文件上传表单字段组件 348
12.9.2 静态文本表单字段组件 352
12.10 其他非官方优秀组件 353
12.11 本章小结 355
第13章 ExtTLD 356
13.1 ExtTLD标签库基础 356
13.1.1 ExtTLD标签库获取 356
13.1.2 ExtTLD的部署 356
13.2 从Hello World学ExtTLD 357
13.3 实现FORM表单 358
13.3.1 简单表单字段示例 358
13.3.2 下拉框字段示例 360
13.4 实现GRID表格 362
13.4.1 gridExtTLD简单表格示例 363
13.4.2 gridExtTLD可编辑表格示例 364
13.4.3 gridExtTLD分组表格示例 365
13.5 实现TREE树 366
13.5.1 简单tree示例 367
13.5.2 访问远程数据示例 367
13.6 本章小结 368
第14章 ExtJS与服务端框架的整合 369
14.1 XML与JSON的生成 369
14.1.1 XStream基础 369
14.1.2 JSON-lib简介 373
14.2 ExtJS与Struts的整合方式 375
14.3 ExtJS与Struts2的整合方式 379
14.3.1 Struts2生成JSON数据 379
14.3.2 Struts2生成XML数据 382
14.4 本章小结 383
第15章 ExtJS Web Portal 384
15.1 什么是Portal 384
15.2 现有Portal的实现技术 384
15.2.1 Pluto 384
15.2.2 Liferay 385
15.2.3 Jetspeed 385
15.2.4 eXo 386
15.2.5 JPortal 387
15.2.6 Ext Portal 387
15.3 Ext Portal的实现 388
15.3.1 Ext Portal的各种组件 389
15.3.2 Ext Portal的拖拽机制 404
15.3.3 Ext Portal的Column管理 407
15.3.4 Ext Portal的标签页的管理 408
15.3.5 Ext Portal的状态请求管理 412
15.3.6 Ext Portal的持久化管理 416
15.3.7 后台处理程序 426
15.3.8 Ext Portal的二次开发 436
15.4 本章小结 438
附录 439