本书是对第1版的全面升级,增补了大量ExtJS 4.0中的新特性。本书语言通俗易懂,版式清新,并且通过大量的实例去讲解技术。对于广大的Web程序员,本书能帮你找到经典应用的解决方案。对RIA Web应用开发的爱好者,本书可以帮你找到进步的阶梯。本书可以作为Web开发的自学参考书,也可以作为RIA Web开发的培训教材。
封面图
目录
- 前言
- 第1章 认识ExtJS1
- 1.1 ExtJS的精彩表现1
- 1.2 ExtJS的前世今生2
- 1.3 是否真的需要学习ExtJS4
- 1.4 ExtJS 4.0新特性8
- 1.5 ExtJS UI组件基础10
- 1.6 了解一下类似技术13
- 1.7 本章小结16
- 第2章 开始ExtJS之旅17
- 2.1 认识ExtJS的开发包17
- 2.2 也从Hello world开始18
- 2.3 ExtJS中的基本概念19
- 2.4 非常有用的开发工具20
- 2.4.1 开发插件spket20
- 2.4.2 FullSource23
- 2.4.3 Microsoft Script Debugger24
- 2.5 ExtJS对原有JavaScript对象的扩展25
- 2.5.1 Ext.Array25
- 2.5.2 Ext.Date27
- 2.5.3 Ext.Function29
- 2.5.4 Ext.Number30
- 2.5.5 Ext.String31
- 2.5.6 Ext.Object32
- 2.6 本章小结33
- 第3章 ExtJS 4.0的基本功能34
- 3.1 ExtJS组件配置说明34
- 3.1.1 JSON介绍34
- 3.1.2 ExtJS组件配置方式介绍35
- 3.2 信息提示框组件介绍36
- 3.2.1 认识Ext.window.MessageBox37
- 3.2.2 Ext.MessageBox.alert()39
- 3.2.3 Ext.MessageBox.confirm()40
- 3.2.4 Ext.MessageBox.prompt()41
- 3.2.5 Ext.MessageBox.wait()42
- 3.2.6 Ext.MessageBox.show()42
- 3.2.7 Ext.window.MessageBox的其他功能45
- 3.3 进度条组件介绍48
- 3.3.1 认识Ext.ProgressBar48
- 3.3.2 手工模式的进度条50
- 3.3.3 自动模式的进度条51
- 3.3.4 自定义样式的进度条样式52
- 3.4 实现工具栏和菜单栏53
- 3.4.1 认识Ext.toolbar.Toolbar53
- 3.4.2 只包含按钮的简单工具栏54
- 3.4.3 包含多种元素的复杂工具栏56
- 3.4.4 启用和禁用工具栏57
- 3.4.5 认识Ext.menu.Menu菜单58
- 3.4.6 最简单的菜单栏58
- 3.4.7 创建二级或多级菜单60
- 3.4.8 将更多组件加入菜单61
- 3.4.9 具有选择框的菜单62
- 3.5 本章小结64
- 第4章 最常用的表单65
- 4.1 表单及表单元素65
- 4.1.1 了解Ext.form.Basic基本表单65
- 4.1.2 认识 Ext.form.Panel表单面板68
- 4.1.3 Ext.form.field.Base基础表单字段70
- 4.1.4 Ext.form.field.Text文本域74
- 4.1.5 Ext.form.field.TextArea文本区76
- 4.1.6 Ext.form.field.Number数字输入框78
- 4.1.7 Ext.form.field.Checkbox复选框和Ext.form.field.Radio单选框80
- 4.1.8 Ext.form.CheckboxGroup和Ext.form. RadioGroup81
- 4.1.9 Ext.form.field.Trigger触发字段83
- 4.1.10 Ext.form.field.Spinner微调字段84
- 4.1.11 Ext.form.field.Picker拾取器字段85
- 4.1.12 Ext.form.field.ComboBox组合框86
- 4.1.13 Ext.form.field.Time时间选择框92
- 4.1.14 Ext.form.field.Date日期选择框94
- 4.1.15 Ext.form.field.Hidden隐藏字段97
- 4.1.16 Ext.form.field.HtmlEditor编辑器字段98
- 4.1.17 Ext.form.field.Display只读文本字段101
- 4.1.18 Ext.form.Label标签字段102
- 4.1.19 Ext.form.FieldSet字段集103
- 4.1.20 Ext.form.FieldContainer容器字段105
- 4.1.21 Ext.form.field.File文件上传字段107
- 4.2 实现表单验证109
- 4.2.1 常见的验证类型109
- 4.2.2 表单验证(VType)110
- 4.2.3 自定义VType验证111
- 4.3 表单的提交和加载114
- 4.3.1 Ext.form.action.Action基础114
- 4.3.2 Ajax模式的表单数据加载116
- 4.3.3 Ajax模式的表单数据提交119
- 4.3.4 标准模式的表单数据提交121
- 4.3.5 使用Direct技术123
- 4.4 本章小结126
- 第5章 面板及布局类127
- 5.1 面板panel127
- 5.1.1 认识Ext.panel.Panel127
- 5.1.2 Ext.panel.Panel的主要功能128
- 5.1.3 使用Ext.panel.Panel131
- 5.2 标准布局类136
- 5.2.1 Auto自动布局136
- 5.2.2 Fit自适应布局137
- 5.2.3 Accordion折叠布局138
- 5.2.4 Card卡片式布局139
- 5.2.5 Anchor锚点布局141
- 5.2.6 Absolute绝对位置布局144
- 5.2.7 CheckboxGroup复选框组布局145
- 5.2.8 Column列布局145
- 5.2.9 Table表格布局148
- 5.2.10 Border边框布局149
- 5.2.11 Box盒布局151
- 5.3 使用ViewPort152
- 5.4 Ext.tab.Panel页签153
- 5.5 本章小结155
- 第6章 常用工具类与函数156
- 6.1 非常有用的Ext.core.Element156
- 6.2 Ext常用函数158
- 6.2.1 Ext.onReady()158
- 6.2.2 Ext.get()160
- 6.2.3 Ext.select ()160
- 6.2.4 Ext.query ()161
- 6.2.5 Ext.getCmp()163
- 6.2.6 Ext.getDom()163
- 6.2.7 Ext.isEmpty()164
- 6.2.8 Ext.namespace()165
- 6.2.9 Ext.each()165
- 6.2.10 Ext.apply()166
- 6.2.11 Ext.encode()167
- 6.2.12 Ext.htmlDecode()168
- 6.2.13 Ext.typeOf()169
- 6.3 Ext.core.DomHelper169
- 6.3.1 Ext.core.DomHepler.append()170
- 6.3.2 Ext.core.DomHelper.applyStyles()170
- 6.3.3 createTemplate()171
- 6.3.4 insertAfter()172
- 6.3.5 insertBefore()172
- 6.3.6 insertFirst()173
- 6.3.7 insertHtml()174
- 6.3.8 overwrite()175
- 6.4 Ext.core.DomQuery176
- 6.4.1 compile()176
- 6.4.2 filter()176
- 6.4.3 is()177
- 6.4.4 jsSelect()177
- 6.4.5 selectNode()177
- 6.5 Ext.util.CSS178
- 6.5.1 createStyleSheet()178
- 6.5.2 getRule ()179
- 6.5.3 swapStyleSheet()179
- 6.5.4 removeStyleSheet()181
- 6.6 Ext.util.ClickRepeater182
- 6.6.1 click()182
- 6.6.2 mousedown()183
- 6.6.3 mouseup()183
- 6.7 Ext.util.DelayedTask提供setTimeout的简单替代184
- 6.7.1 cancle()184
- 6.7.2 delay()185
- 6.8 Ext.util.Format 提供常用的格式化方法185
- 6.8.1 ellipsis()185
- 6.8.2 capitalize()185
- 6.8.3 date()186
- 6.8.4 htmlEncode ()186
- 6.8.5 htmlDecode()186
- 6.8.6 stripTags()187
- 6.8.7 substr()187
- 6.8.8 lowercase()187
- 6.8.9 number()187
- 6.8.10 round()188
- 6.9 Ext.util.JSON 编码和解码Json对象189
- 6.9.1 decode()189
- 6.9.2 encode()189
- 6.10 Ext.util.MixedCollection190
- 6.10.1 向集合加入对象190
- 6.10.2 将数组中的对象加入到集合中191
- 6.10.3 移除集合中的对象191
- 6.10.4 克隆集合192
- 6.10.5 匹配集合中关联对象192
- 6.10.6 迭代集合中的对象调用指定的方法192
- 6.10.7 获取集合中的对象193
- 6.10.8 该类中的其他一些有用的方法194
- 6.10.9 该类中重要的事件(Events)196
- 6.11 Ext.util.TaskRunner197
- 6.11.1 构造函数197
- 6.11.2 启动一个线程start()198
- 6.11.3 停止一个线程stop()198
- 6.11.4 停止所有的线程stopAll()198
- 6.12 Ext.util.TextMetrics得到块状化文本规格199
- 6.12.1 块的绑定199
- 6.12.2 实例化对象199
- 6.12.3 获取文本的高度199
- 6.12.4 获取文本的宽、高200
- 6.12.5 获取文本的宽度200
- 6.12.6 获取指定节点内文本块的宽、高200
- 6.12.7 指定文本块的宽201
- 6.13 Ext.KeyNav为元素提供简单的按键处理方法201
- 6.13.1 实例化一个键盘绑定对象202
- 6.13.2 废弃原有键盘绑定202
- 6.13.3 将废弃的键盘绑定重新生效203
- 6.14 Ext.KeyMap 提供更灵活强大的对按键的处理方法203
- 6.14.1 构造函数203
- 6.14.2 给对象添加键盘绑定204
- 6.14.3 废弃已绑定到KeyMap的配置205
- 6.14.4 将KeyMap或废弃的配置重新生效205
- 6.14.5 获取当前KeyMap配置是否为有效205
- 6.14.6 事件绑定函数205
- 6.15 本章小结206
- 第7章 让ExtJS开始响应事件207
- 7.1 ExtJS事件与浏览器标准事件的异同207
- 7.1.1 事件绑定方式207
- 7.1.2 自定义事件209
- 7.1.3 跨浏览器事件210
- 7.2 ExtJS事件特性211
- 7.2.1 Ext.util.Observable(事件基类)211
- 7.2.2 举例一:addEvents 、fireEvent、addListener213
- 7.2.3 举例二:capture拦截器示例214
- 7.2.4 举例三:addManagedListener受管事件监听器215
- 7.2.5 举例四:relayEvents传播分发事件216
- 7.3 Ext.EventObject(事件对象)217
- 7.4 Ext.EventManager(事件管理器)218
- 7.5 本章小结220
- 第8章 常见Web框架的ExtJS改造221
- 8.1 常见Web应用框架说明221
- 8.2 简易书籍管理系统221
- 8.2.1 总体设计222
- 8.2.2 数据库设计222
- 8.2.3 数据库脚本222
- 8.2.4 工程框架设计223
- 8.2.5 页面设计231
- 8.3 怎样开始232
- 8.3.1 页面改造233
- 8.3.2 与服务器交互方式的改造233
- 8.4 开始改造吧233
- 8.4.1 改造主页面布局233
- 8.4.2 改造菜单栏235
- 8.4.3 改造书籍维护界面237
- 8.4.4 改造书籍新增界面239
- 8.4.5 改造书籍修改界面246
- 8.4.6 改造书籍删除功能248
- 8.5 换肤的实现250
- 8.5.1 创建实现换肤功能的自定义组件Ext.ux.ThemeChange250
- 8.5.2 查看换肤效果251
- 8.6 本章小结251
- 第9章 ExtJS对Ajax的支持252
- 9.1 Ext.Ajax入门252
- 9.1.1 Ext.Ajax.request方法详解253
- 9.1.2 Ext.Ajax.request操作示例255
- 9.2 Ext.ElementLoader基础259
- 9.2.1 Ext.ElementLoader.load操作示例260
- 9.2.2 Ext.ElementLoader其他方法示例262
- 9.3 利用Ajax优化Web应用框架264
- 9.3.1 多级联动菜单264
- 9.3.2 天气情况查询267
- 9.3.3 自动保存的网络记事本270
- 9.3.4 网页计算器272
- 9.4 本章小结274
- 第10章 增强型模板276
- 10.1 熟悉Ext.Template276
- 10.2 Ext.XTemplate基础280
- 10.2.1 自动填充数组和作用域切换280
- 10.2.2 在子模板中访问父对象281
- 10.2.3 数组索引和简单运算支持282
- 10.2.4 自动渲染简单数组283
- 10.2.5 使用基本的条件逻辑判断283
- 10.2.6 在模板中执行任意代码284
- 10.2.7 使用模板成员函数285
- 10.3 在ExtJS组件中使用模板286
- 10.4 使用模板的优势288
- 10.5 Ext.view.View数据视图类详解288
- 10.6 本章小结291
- 第11章 数据模型292
- 11.1 ExtJS数据模型基础292
- 11.2 Model数据实体模型293
- 11.2.1 创建实体295
- 11.2.2 Ext.data.validations数据验证296
- 11.2.3 数据代理(读取与保存)299
- 11.2.4 Ext.data.HasManyAssociation一对多关系300
- 11.2.5 Ext.data.BelongsToAssociation多对一关系303
- 11.3 Proxy数据代理306
- 11.3.1 Ext.data.proxy.Proxy307
- 11.3.2 Ext.data.proxy.Client307
- 11.3.3 Ext.data.proxy.Memory307
- 11.3.4 Ext.data.proxy.WebStorage308
- 11.3.5 Ext.data.proxy.LocalStorage309
- 11.3.6 Ext.data.proxy.SessionStorage310
- 11.3.7 Ext.data.proxy.Server310
- 11.3.8 Ext.data.proxy.Ajax311
- 11.3.9 Ext.data.proxy.Rest315
- 11.3.10 Ext.data.proxy.JsonP316
- 11.3.11 Ext.data.proxy.Direct318
- 11.4 Reader数据读取器319
- 11.4.1 Ext.data.reader.Reader320
- 11.4.2 Ext.data.reader.Json320
- 11.4.3 Ext.data.reader.Xml323
- 11.4.4 Ext.data.reader.Array324
- 11.5 Writer数据写入器325
- 11.5.1 Ext.data.writer.Writer325
- 11.5.2 Ext.data.writer.Json326
- 11.5.3 Ext.data.writer.Xml327
- 11.6 Store数据集327
- 11.6.1 Ext.data.AbstractStore327
- 11.6.2 Ext.data.Store328
- 11.6.3 Ext.data.ArrayStore、Ext.data.JsonStore及Ext.data.XmlStore333
- 11.6.4 Ext.data.DirectStore和Ext.data. JsonPStore334
- 11.7 本章小结335
- 第12章 Grid组件336
- 12.1 表格面板Ext.grid.Panel337
- 12.2 表格列Column339
- 12.2.1 布尔列Ext.grid.column.Boolean340
- 12.2.2 数字列Ext.grid.column.Number340
- 12.2.3 日期列Ext.grid.column.Date340
- 12.2.4 动作列Ext.grid.column.Action341
- 12.2.5 模板列Ext.grid.column.Template343
- 12.2.6 行号列Ext.grid.RowNumberer343
- 12.2.7 自定义渲染函数344
- 12.3 选择模式Selection345
- 12.3.1 选择模式 Ext.selection.Model345
- 12.3.2 单元格选择模式Ext.selection. CellModel346
- 12.3.3 行选择模式Ext.selection.RowModel348
- 12.3.4 复选框选择模式Ext.selection. CheckboxModel348
- 12.4 表格特性Feature349
- 12.4.1 表格行体Ext.grid.feature.RowBody349
- 12.4.2 表格汇总Ext.grid.feature.Summary351
- 12.4.3 表格分组Ext.grid.feature.Grouping352
- 12.4.4 分组汇总Ext.grid.feature. GroupingSummary353
- 12.5 表格插件plugin354
- 12.5.1 单元格编辑插件Ext.grid.plugin. CellEditing354
- 12.5.2 行编辑插件Ext.grid.plugin.RowEditing356
- 12.5.3 拖曳插件Ext.grid.plugin.DragDrop357
- 12.6 属性表格property.Grid359
- 12.7 表格分页361
- 12.8 本章小结362
- 第13章 Tree组件363
- 13.1 树形面板Ext.tree.Panel363
- 13.1.1 多列树364
- 13.1.2 带复选框的树366
- 13.1.3 树面板间的拖曳366
- 13.2 Ext.data.TreeStore368
- 13.2.1 分级加载树节点368
- 13.2.2 整体加载树节点370
- 13.3 本章小结371
- 第14章 ExtJS与服务端框架的整合372
- 14.1 XML与JSON的生成372
- 14.1.1 XStream基础372
- 14.1.2 JSON-lib简介376
- 14.2 ExtJS与Struts的整合方式378
- 14.3 ExtJS与Struts 2的整合方式380
- 14.3.1 Struts 2生成JSON数据381
- 14.3.2 Struts 2生成XML数据383
- 14.4 本章小结384
- 第15章 主题385
- 15.1 Sass和Compass概述385
- 15.1.1 Sass简介385
- 15.1.2 Compass简介385
- 15.2 ExtJS主题样式开发387
- 15.2.1 基本配置文件config.rb387
- 15.2.2 定制主题388
- 15.3 组件UI开发389
- 15.3.1 组件UI混入函数介绍390
- 15.3.2 开发面板组件UI391
- 15.4 本章小结393
- 第16章 Ext.Direct394
- 16.1 如何配置和使用Ext.Direct394
- 16.1.1 支持类库的下载394
- 16.1.2 配置服务器端功能395
- 16.1.3 配置客户端400
- 16.1.4 远程调用实例402
- 16.2 本章小结408
- 第17章 Draw图形409
- 17.1 常见浏览器绘图技术介绍及对比409
- 17.2 精彩的图形世界410
- 17.3 ExtJS图形包410
- 17.3.1 Ext.draw.Component图形组件详解411
- 17.3.2 Ext.draw.Sprite子画面组件详解411
- 17.3.3 绘制基本图形412
- 17.3.4 绘制不规则图形413
- 17.3.5 绘制文字414
- 17.3.6 线性渐变415
- 17.3.7 图形旋转417
- 17.3.8 动态变换418
- 17.3.9 拖曳缩放419
- 17.3.10 拖曳移动420
- 17.4 本章小结421
- 第18章 Chart图表422
- 18.1 Ext.chart图表组件概述422
- 18.2 坐标轴组件详解423
- 18.2.1 Ext.chart.axis.Numeric数值轴425
- 18.2.2 Ext.chart.axis.Category分类轴426
- 18.2.3 Ext.chart.axis.Time时间轴426
- 18.2.4 Ext.chart.axis.Gauge仪表轴427
- 18.2.5 Ext.chart.axis.Radial雷达轴427
- 18.3 图表序列详解427
- 18.3.1 Ext.chart.series.Pie饼状图428
- 18.3.2 Ext.chart.series.Cartesian直角坐标系图表431
- 18.3.3 Ext.chart.series.Bar条形图432
- 18.3.4 Ext.chart.series.Column柱状图433
- 18.3.5 Ext.chart.series.Line折线图435
- 18.3.6 Ext.chart.series.Scatter散点图437
- 18.3.7 Ext.chart.series.Area面积图438
- 18.3.8 Ext.chart.series.Radar雷达图440
- 18.3.9 Ext.chart.series.Gauge仪表图442
- 18.4 在图表中使用主题443
- 18.5 复合图表446
- 18.6 图表与表格446
- 18.7 本章小结449
- 附录A 450