第1章 开篇 1
1.1 网络开发浪潮 2
1.2 基于JavaScript的RIA开发观念 3
1.3 风靡世界的Ext 3
第2章 Ext起步 7
2.1 获取Ext的方法 8
2.2 Ext运行环境 8
2.3 如何兼容其他JavaScript库 9
2.4 如何学好Ext框架 11
第3章 Ext基础 13
3.1 构成界面的元素 14
3.1.1 获取页面元素 14
3.1.2 Ext.get()/Ext.fly()区别 16
3.1.3 获取周边元素 17
3.1.4 元素的增/删/改/查 18
3.2 元素的高级查询 22
3.2.1 DomQuery详解 22
3.2.2 Composite元素集合 25
3.2.3 CSS选择符详解 27
3.2.4 ID/Class拾遗 30
3.3 控制元素 30
3.3.1 页面显示方法 30
3.3.2 动画Fx集锦 32
3.3.3 元素小结 33
3.4 应用模板 34
3.4.1 Ext.Template 35
3.4.2 Ext.XTemplate 37
3.5 例子:制作一个对话框 39
3.5.1 afterRender事件 41
3.5.2 继承用法 43
第4章 Ext事件 45
4.1 浏览器事件浅析 46
4.1.1 内联式登记(inline) 46
4.1.2 传统式登记 47
4.1.3 IE式登记 47
4.1.4 DOM Level 2式登记 48
4.1.5 事件对象 50
4.2 事件与函数 50
4.2.1 变量的声明 50
4.2.2 嵌套的函数 51
4.2.3 Function.call()/apply() 52
4.2.4 深入Event Handler 54
4.2.5 Ext的事件 59
4.3 高级事件及其控制 62
4.3.1 基础事件与高级组件事件 62
4.3.2 高级组件事件详解 64
4.3.3 键盘上的按键事件 69
4.4 例子:制作一个小Widget 71
4.4.1 定义UI/CSS 72
4.4.2 继承Observable(重点) 74
4.4.3 配置项参数 76
第5章 创建图形界面 79
5.1 界面架构及原理 80
5.1.1 组件的生存周期 81
5.1.2 模板方法简介 87
5.1.3 对象模型之Component 92
5.1.4 对象模型之Container 92
5.1.5 对象模型之Panel 93
5.1.6 对象模型之Viewport 94
5.1.7 小结 95
5.2 组件的高级应用 95
5.2.1 组件的延时渲染 95
5.2.2 组件管理器 96
5.2.3 避免相同id的冲突 97
5.2.4 组件之间的通信 98
5.2.5 关于插件的应用 100
5.3 容器的布局 101
5.3.1 布局简介 101
5.3.2 使用AnchorLayout 104
5.3.3 使用FormLayout 106
5.3.4 使用ColumnLayout 107
5.3.5 调试ColumnLayout 113
5.4 拖放操作 115
5.4.1 入门:一个小游戏 115
5.4.2 简单的拖放 116
5.4.3 自定义拖放详解 118
5.4.4 群体式拖放模式 119
第6章 展示数据 123
6.1 如何产生组件读取的数据 124
6.1.1 org.json(Struts篇) 124
6.1.2 LitJSON(.NET篇) 128
6.2 表格组件Grid 135
6.2.1 Grid入门 135
6.2.2 Store结构 144
6.2.3 分页、查询、排序 149
6.2.4 列模型与单元格 155
6.2.5 多层表头 161
6.2.6 使用拖放行为 163
6.2.7 PropertyGrid扩展简介 169
6.2.8 使用DataView组件 171
6.3 表单组件Form 179
6.3.1 表单提交 179
6.3.2 表单验证及其控制 186
6.3.3 表单/数据绑定 193
6.3.4 插件/扩展两则 196
6.3.5 集成TinyMCE Editor编辑器 198
6.4 列表组件ComboBox 201
6.4.1 基本使用方法 201
6.4.2 调整Combobox内的元素 206
6.4.3 实现Combobox的联动 211
6.4.4 TreeComboBox简介 214
6.5 树状组件Tree 216
6.5.1 Tree入门 216
6.5.2 如何定义数据源 221
6.5.3 改变节点图标 224
6.5.4 Tree的拖放 226
6.5.5 调试动态树 229
第7章 数据驱动 237
7.1 XML/JSON数据格式比较 238
7.2 容器类MixedCollection 239
7.2.1 构造器以及属性 240
7.2.2 集合存储操作方法(一) 241
7.2.3 集合存储操作方法(二) 245
7.2.4 集合查询遍历方法 246
7.3 数据存储基本单元Record与DataField 248
7.3.1 准备基础数据 248
7.3.2 DataField详解 250
7.3.3 Record详解(一) 250
7.3.4 Record详解(二) 252
7.4 数据存储Store 255
7.4.1 数据的载入 255
7.4.2 远程数据的载入 259
7.4.3 数据的添加 263
7.4.4 取得记录信息 269
7.4.5 排序 273
7.4.6 事务模式 274
7.4.7 查找 276
7.5 数据代理DataProxy 277
7.5.1 Ext.data.DataProxy 277
7.5.2 Ext.data.MemoryProxy 278
7.5.3 Ext.data.HttpProxy 279
7.5.4 Ext.data.ScriptTagProxy 280
7.6 数据读取器DataReader 282
7.6.1 Ext.data.DataReader 282
7.6.2 Ext.data.ArrayReader 282
7.6.3 Ext.data.JsonReader 284
7.6.4 Ext.data.XmlReader 286
7.7 Ext.ux.DWR+Spring 287
7.7.1 DwrProxy/DwrReader 288
7.7.2 整合Spring的例子 289
7.7.3 Web服务端配置 289
7.7.4 服务层接口 291
7.8 RESTful的支持 293
7.9 Ext.Direct 293
7.9.1 通迅新方式:Ext.Direct 293
7.9.2 配置器 294
7.9.3 API供应器 296
7.9.4 路由器 298
7.9.5 例子 300
7.9.6 小结 301
第8章 JavaScript高级应用 303
8.1 JavaScript闭包详解 304
8.1.1 闭包的概念 304
8.1.2 闭包成员的生命周期 305
8.1.3 引用而不是复制 306
8.1.4 闭包应用场景 307
8.2 JavaScript的继承 308
8.2.1 大杂烩JavaScript 308
8.2.2 定义类别 309
8.2.3 加入方法 310
8.2.4 基于类的继承 311
8.3 修改页面皮肤 315
8.3.1 从Ext.BLANK_IMAGE_URL说起 315
8.3.2 实时换肤功能 317
8.3.3 样式精粹:CSS Sprites 318
8.3.4 九宫格方位与baseCls 320
8.4 处理i18n 322
8.4.1 国际化与本地化 322
8.4.2 多语言的Ext 323
第9章 大型UI控件 327
9.1 Edk简介 328
9.1.1 项目起步 328
9.1.2 顶层源码概览 331
9.1.3 数据通信机制Ext.Direct 333
9.2 如何复用Ext组件 338
9.2.1 “1+2”之一 339
9.2.2 “1+2”之二 341
9.2.3 “1+2”之三 343
9.2.4 小结 347
9.3 Edk.grid.* 348
9.3.1 浅谈行为模式 348
9.3.2 如何分配Action 349
9.3.3 如何扩展该模式 351
9.4 Edk.tree.* 351
9.4.1 如何设计分类的Tree 351
9.4.2 如何添加特定的节点 353
9.4.3 如何使得TreeNode可编辑 354
9.5 Edk.formPanel.* 354
9.6 Edk.attachment.* 356
第10章 新闻管理系统 359
10.1 简介 360
10.1.1 项目需求 360
10.1.2 面向.NET的架构 360
10.1.3 系统需要使用的资源 360
10.1.4 准备数据库表 361
10.1.5 设置配置文件 363
10.2 页面实作 365
10.2.1 登录页(index.html) 365
10.2.2 主页面(index.aspx) 370
10.2.3 用户管理页面(users.aspx) 372
10.2.4 新闻管理页面(news.aspx) 379
10.2.5 剩余的服务端任务 390