Chapter 01 酷炫效果营造者,探讨AJAX Control Toolkit(上) 1
1-1 如何将AJAX Control Toolkit控件添加到Visual Studio 2008“工具箱” 2
1-2 如何添加AJAX Control Toolkit控件与扩展器的命名空间(Namespace) 5
1-3 探讨控件(Control)与扩展器(Extender) 7
1-4 既生瑜何生亮——为什么需改用ToolkitScriptManager 8
1-5 探讨可折叠面板(AccordionPane)与可折叠(Accordion)控件 13
范例1 如何使用可折叠(Accordion)控件展开或收缩内容&1 6
范例2 在问卷中,使用可折叠控件以避免版面过长 21
范例3 在可折叠控件中,动态绘制柱形图 21
范例4 将可折叠控件绑定到ObjectDataSource,通过Web服务访问XML格式的留言数据文件 23
范例5 使用LingDataSource作为可折叠控件的数据源,并搭配多种Control Toolkit 23
范例6 使用JavaScript为“可折叠控件(Accordion)”添加新属性,使其看起来如同“可收缩面板(CollapsiblePanel)” 25
1-6 形影不离(AlwaysVisibleControl)扩展器 28
范例7 如何使用AlwaysVisibleControl控件 29
范例8 扩展器AlwaysVisibleControlExtender使用范例 33
1-7 动画集锦扩展器(AnimationExtender) 34
1-7-1 使用XML声明语法设置动画集锦 34
范例9 示范如何使用“淡出”(FaceOut)效果的AnimationExtender控件 39
1-7-2 同时或顺序播放动画 40
范例10 示范如何使用<Parallel>与<Sequence>标签组合出不同的动画效果 40
范例11 先使用<Sequence>标签,然后再使用<Parallel>标签来产生复合式的“爆炸”动画效果 42
1-7-3 结合“动作”的动画 45
范例12 示范结合“动作”的动画效果 45
范例13 实现“自动输入完成”来查询书籍资料,并播放“动画”以显示相关信息 49
1-8 自动输入完成扩展器(AutoCompleteExtender) 55
范例14 异步地添加、修改与删除数据界面 60
范例15 自动输入完成调用Page Method,可输入多个词,并已加入动画的效果 65
范例16 使用JavaScript给自动输入完成添加相关事件处理方法 69
1-9 日历扩展器(CalendarExtender) 72
范例17 探讨日历扩展器的使用模式 76
范例18 示范“日历”扩展器来编辑日期类型字段 77
范例19 通过JavaScript来指定日历扩展器的默认日期 78
范例20 仅用一个日历扩展器在多个日期字段中 80
1-10 级联下拉菜单(CascadingDropDown)扩展器 81
范例21 示范如何使用“级联下拉菜单”(CascadingDropDown) 84
范例22 邮政编码选择界面 90
范例23 示范整合使用Silverlight与ASP.NET AJAX“级联下拉菜单”(CascadingDropDown) 94
1-11 可收缩面板(CollapsiblePanel) 94
范例24 示范可收缩面板(CollapsiblePanel) 97
范例25 示范使用可收缩面板制作书籍目录 97
范例26 示范使用“可收缩面板”展开与折叠统计图表 98
范例27 示范如何使用水平式可收缩面板 99
范例28 在可折叠控件内使用水平式可收缩面板 101
范例29 在ListView控件中,使用GridView控件搭配可收缩面板来显示分组后的详细结果 101
1-12 确认按钮(ConfirmButton) 103
范例30 示范使用确认按钮(ConfirmButton)再次确认是否执行特定功能 104
范例31 在确认按钮中,使用强制弹出框代替确认对话框 106
1-13 拖曳面板(DragPanel) 107
范例32 示范使用拖曳面板(DragPanel) 108
范例33 在拖曳面板中,新建或修改数据 109
1-14 下拉菜单(DropDown) 111
范例34 创建具备Windows?SharePointTM Server风格的动态下拉菜单 114
1-15 阴影面板(DropShadow) 116
范例35 使用阴影面板(DropShadow)让页面画面更专业 117
1-16 动态填充扩展器(DynamicPopulateExtender) 118
范例36 使用动态填充(DynamicPopulate)由Web服务获取并显示实时天气现况 120
范例37 使用页面方法(Page Method)搭配动态填充扩展器读取RSS文章 122
范例38 在动态填充扩展器中,使用页面方法随机显示影片内容 126
1-17 文本框过滤器(FilteredTextBox) 128
范例39 使用文本框过滤器(FilteredTextBox)——简易计算器 130
范例40 如何使用文本框过滤器(FilteredTextBox)检查所输入的个人资料是否合法 133
1-18 停靠菜单(HoverMenu) 135
范例41 使用停靠菜单(HoverMenu)来编辑与删除员工数据 137
范例42 使用停靠菜单(HoverMenu)显示存储在数据库的产品照片 141
范例43 示范在文本框中,使用停靠菜单显示选项按钮列表 144
范例44 使用停靠菜单动态调用Web服务来显示某支股票图线 145
1-19 列表搜索(ListSearch) 147
范例45 使用ListSearchExtender查询邮政编码所在的县市 149
范例46 使用列表搜索扩展器快速找到特定的选项 150
范例47 如何在列表项目中使用ListSearch搜索中文字 151
Chapter 02 酷炫效果营造者,探讨AJAX Control Toolkit(下) 156
2-1 探讨输入掩码(MaskedEdit)与输入掩码验证器(MaskedEditValidator) 157
范例1 示范如何在DetailsView中使用输入掩码与输入掩码验证器 165
2-2 强制弹出(ModalPopup) 167
范例2 使用“强制弹出(ModalPopup)”控件提供更改样式的弹出菜单 170
范例3 使用ModalPopup显示相片信息 172
范例4 如何处理有多个“取消”按钮的强制弹出框 173
范例5 使用ModalPopup代替JavaScript的Confirm函数以便单击“确认”按钮更新数据 174
范例6 强制弹出调用页面方法显示股票交易价格 176
范例7 使用强制弹出框显示与编辑主从式数据 180
范例8 让强制弹出框具备按下Esc键关闭对话框的功能 183
范例9 以动画方式显示强制弹出框内容 187
2-3 互斥选取框(MutuallyExclusiveCheckBox) 190
范例10 使用“互斥选取框(MutuallyExclusiveCheckBox)”进行问卷调查 191
2-4 拒绝机器人行为(NoBot) 193
范例11 如何使用基本的拒绝机器人行为 195
范例12 在拒绝机器人行为控件中,利用JavaScript进行检测 197
范例13 在留言板中,为拒绝机器人行为添加DOM,来避免刷屏 200
2-5 数值调整器(NumericUpDown) 203
范例14 示范在GridView中使用数值调整器来编辑字段值 206
范例15 示范如何为数值调整器动态添加枚举值 207
范例16 调用Web服务来取得递增与递减值 209
2-6 分页项目符号列表(PagingBulletedList) 210
范例17 示范如何使用分页项目符号列表 211
范例18 使用JavaScript控制分页项目符号列表 212
2-7 密码强度(PasswordStrength) 215
范例19 示范如何使用密码强度扩展器 219
2-8 弹出控件(PopupControl) 220
范例20 示范在GridView控件使用弹出式控件 222
范例21 示范在GridView控件中使用弹出控件扩展器 225
范例22 使用弹出式控件调用页面方法模拟停靠菜单的效果 229
2-9 评级(Rating) 232
范例23 示范如何使用评级控件 234
范例24 善用评级控件的客户端回调事件 236
范例25 如何避免单击评级控件页面自动往上滚动 239
2-10 顺序重排列表(ReorderList) 243
范例26 待办事项,可自行拖曳事项决定优先次序 246
2-11 可调整大小扩展器(ResizableControl) 249
范例27 示范如何使用可调整大小控件 250
范例28 示范如何使用可调整大小控件来随意调整GridView控件中的柱形图 252
2-12 圆角(RoundedCorners) 253
范例29 示范在异步相簿中,使用圆角扩展器 254
范例30 示范使用圆角扩展器的客户端属性 254
范例31 使用滑块扩展器来调整圆角的半径 255
2-13 滑块(Slider) 256
范例32 使用滑块查看字体中的字符 259
范例33 使用滑块来调整图片的高度与宽度:由服务器端控制 260
范例34 使用滑块来调整图片的高度与宽度:通过JavaScript 261
2-14 相簿播放(SlideShow) 262
范例35 相簿播放器使用示范:逐一指定相片来源 265
范例36 相簿播放器使用示范:由文件夹取得相片来源 266
范例37 自选播放的相簿(可设置循环播放与播放速度) 268
范例38 为相簿加上动画效果 273
2-15 选项卡(Tabs) 277
范例39 示范如何使用选项卡(Tab) 281
范例40 在选项卡中,使用主从式(Master/Detail)编辑模式 284
范例41 在第一次选择特定“选项卡”时,才动态加载“选项卡”的内容 287
范例42 动态创建选项卡(内容由Web服务返回) 293
2-16 水印文本框(TextBoxWatermark) 295
范例43 使用JavaScript检查水印文本框的输入内容 296
范例44 水印文本框扩展器使用示范 298
2-17 双态按钮(ToggleButton) 299
范例45 双态按钮(ToggleButton)使用示范 300
2-18 更新面板动画效果(UpdatePanelAnimation) 301
范例46 示范如何使用更新面板动画效果扩展器赋予UpdatePanel动画效果 302
范例47 示范如何使用更新面板动画效果扩展器赋予相簿淡入效果 303
范例48 为GridView控件注入更新面板动画效果 304
范例49 制作类似Gmail载入中的动画效果 307
2-19 外显型对话框验证器(ValidatorCallout) 309
范例50 示范如何使用“外显型对话框验证器” 311
Chapter 03 如何在ASP.NET页面中使用JavaScript 315
3-1 ASP.NET 3.5的JavaScript功能综述 316
3-2 如何将JavaScript包含在页面中 317
3-3 以脚本块的形式来包含JavaScript 317
范例1 JavaScript数字时钟 317
范例2 在浏览器的状态栏中显示JavaScript数字时钟 319
范例3 示范使用JavaScript重定向网页 320
3-4 引用存储在.js文件中的JavaScript 321
范例4 使用JavaScript制作跑马灯 321
3-5 使用ClientScriptManager类动态创建JavaScript 323
范例5 示范使用ClientScriptManager对象的方法来动态加入JavaScript 324
3-6 如何使用ScriptManager对象来引用JavaScript——非常重要 328
3-6-1 以声明方式引用独立存在的.js文件 328
范例6 示范引用独立存在的Animation.js与Timer.js来播放动画 328
3-6-2 以声明方式引用嵌入组件中的.js文件 331
范例7 示范引用AjaxControlToolkit.dll组件中的Animation.js与Timer.js来播放动画 332
3-6-3 以编程方式动态引用JavaScript 332
范例8 示范使用ScriptManager控件动态引用独立存在的JavaScript文件(通过创建ScriptReference对象) 333
范例9 示范使用ScriptManager控件动态引用独立存在的JavaScript文件(通过调用RegisterClientlnclude方法) 336
范例10 示范使用ScriptManager控件动态引用独立存在的JavaScript文件 337
范例11 示范使用ScriptManager控件动态引用嵌入组件中的JavaScript文件 338
3-7 如何使用服务器控件的客户端事件 339
3-7-1 以声明方式指定客户端事件处理程序 339
范例12 示范如何指定鼠标移入、鼠标移出与单击的客户端事件处理程序 340
范例13 示范使用客户端事件onmouseover制作一个简易相簿 343
3-7-2 以编程方式指定客户端事件处理程序 345
范例14 示范以编程方式为TextBox服务器控件指定客户端事件处理程序 345
范例15 示范以编程方式为Image服务器控件指定客户端事件处理程序 346
范例16 制作鼠标指针移到ListView控件的数据行上方时的醒目提示效果——重要!! 352
范例17 示范让ListView控件的数据行同时具备醒目提示效果与图片变换效果——重要!! 355
3-8 如何在JavaScript中访问ASP.NET服务器控件 358
范例18 结合JavaScript与ListBox服务器控件的客户端挑选界面 358
范例19 异步的可收缩数据分组界面 362
3-9 探讨客户端JavaScript与服务器端程序代码的沟通方式——非常重要 365
3-9-1 直接从客户端JavaScript调用服务器端程序代码 365
3-9-2 如何实现一个客户端回调 366
范例20 示范如何实现客户端回调来让页面不需要整个回发 367
3-9-3 使用一个HiddenField控件来共享数据 370
范例21 示范使用RegisterHiddenField方法与RegisterArrayDeclaration方法 370
3-9-4 使用Cookie来共享数据 372
范例22 客户端JavaScript与服务器端程序代码如何共享Cookie(已解决中文乱码问题) 372
3-9-5 使用异步回发共享数据 376
范例23 示范使用ScriptManager控件的RegisterDataltem方法将自定义数据从服务器传送到客户端 376
范例24 如何将GridView中已被更新的数据行顺序编号发送到客户端以便制作动态醒目的提示效果 379
3-10 题外话——可以动态创建ScriptManager控件吗? 382
范例25 示范动态添加ScriptManager控件 382
结语 384
Chapter 04 探讨JavaScript的OOP扩展功能 385
4-1 面向对象功能综述 386
4-2 如何使用命名空间与类 388
范例1 示范如何使用命名空间与类 396
4-3 如何使用继承 402
范例2 示范如何使用类与继承 402
范例3 示范如何创建多层级类的继承关系 405
范例4 示范如何操作父类及派生子类 411
范例5 示范如何继承AJAX Control Toolkit的动画类 415
范例6 示范通过继承AJAX Control Toolkit的动画类为异步滚动缩略图相簿添加动态说明效果 419
4-4 如何使用接口 424
范例7 示范如何使用类与接口 425
范例8 示范如何使用类继承与接口 429
范例9 示范如何使用接口变化类的功能 435
4-5 如何使用枚举 442
范例10 示范如何使用JavaScript枚举 443
范例11 示范如何使用类与枚举 446
4-6 如何使用反射 447
范例12 示范如何使用JavaScript类与反射 448
4-7 探讨客户端页面生命周期事件 452
4-7-1 探讨重要的客户端类 452
4-7-2 为客户端事件编写事件处理程序 453
4-7-3 如何使用页面的load与unload事件 453
4-7-4 如何使用其他客户端类的事件 453
4-7-5 客户端事件列表 454
4-7-6 客户端事件执行顺序 455
范例13 具体查看客户端页面生命周期事件引发顺序 457
4-8 探讨Array类扩展 462
4-9 探讨Boolean类扩展 462
4-10 探讨Date类扩展 463
4-11 探讨Error类扩展 463
4-12 探讨Number类扩展 464
4-13 探讨Object类扩展 464
4-14 探讨String类扩展 464
结语 465
Chapter 05 探讨JavaScript的日期全球化功能 466
5-1 关于区域特征值 467
5-2 使用浏览器语言设置来全球化JavaScript的日期 467
范例1 使用浏览器语言设置来全球化JavaScript的日期 468
5-3 使用Web.config设置来全球化JavaScript的日期 470
5-4 使用页面设置来全球化JavaScript的日期 471
范例2 示范使用@Page指示词来设置页面的区域特征值 471
5-5 使用服务器端程序代码来全球化JavaScript的日期 471
范例3 示范重写网页的InitialiizeCulture方法来设置页面的区域特征值 471
5-6 JavaScript日期全球化的优先级 473
Chapter 06 探讨如何在客户端使用JavaScript异步调用Web服务(.asmx与.svc) 474
6-1 Web服务通信层功能综述 475
6-1-1 关于AJAX 476
6-1-2 善用JSON 476
范例1 客户端序列化与服务器端反序列化 476
范例2 服务器端序列化与客户端反序列化 484
6-1-3 送出HTTP请求 489
范例3 使用WebRequest对象来实现GET与POST Web请求 489
6-2 客户端与服务器间的通信 493
6-2-1 客户端架构 493
6-2-2 服务器架构 495
6-3 客户端类型简介 496
6-4 服务器类型简介 497
6-5 如何将ASP.NET Web服务(.asmx)公开给JavaScript 498
6-5-1 公开给JavaScript调用ASP.NET Web服务所需满足的条件 498
6-5-2 如何在页面中注册JavaScript所要调用的Web服务 500
范例4 使用JavaScript调用ASP.NET Web服务来执行异步数据库查询 501
范例5 使用JavaScript调用ASP.NET Web服务时的错误处理 506
范例6 如何使用HTTP GET verb来调用一个ASP.NET Web服务方法 509
范例7 使用JavaScript调用一个会返回XmlDocument对象的ASP.NET Web服务方法 512
范例8 结合JavaScript调用ASP.NET Web服务方法与ASP.NET AJAX Control Toolkit的缩放式异步查询界面 515
范例9 示范动态引用ASP.NET Web服务 524
6-6 如何将WCF服务(.svc)公开给JavaScript 524
6-6-1 公开给JavaScript调用的WCF服务所需满足的条件 525
6-6-2 如何在页面中注册JavaScript所要调用的WCF服务 527
范例10 示范使用JavaScript异步调用WCF服务的方法来返回服务器时间 527
范例11 示范使用JavaScript异步调用WCF服务的方法 530
范例12 示范使用JavaScript异步调用WCF服务的方法来转换华氏与摄氏温度 534
6-7 如何让多个Web服务方法共享同一个成功回调函数 538
范例13 示范利用用户内容与方法名称判断调用者 538
6-8 如何传递与接收复杂类型 541
范例14 示范传递与接收复杂类型的自定义颜色对象 541
范例15 示范传递与接收复杂类型的自定义菜单对象 545
6-9 JavaScript与Web服务之间如何传递泛型集合与数组——非常重要!! 554
范例16 示范在JavaScript与Web服务之间传递和取得泛型集合与数组 554
6-10 如何使用JavaScript调用页面方法(Page Method) 564
范例17 如何使用JavaScript调用页面方法来实现自动输入完成功能 564
Chapter 07 探讨如何在客户端使用JavaScript异步调用ASP.NET应用程序服务 581
7-1 如何使用JavaScript异步调用验证服务 582
7-1-1 探讨login方法 582
7-1-2 探讨logout方法 583
7-1-3 探讨defaultFailedCallback属性 584
7-1-4 探讨defaultLoginCompletedCallback属性 585
7-1-5 探讨defaultLogoutCompletedCallback属性 587
7-1-6 探讨isLoggedln属性 588
7-1-7 探讨path属性 588
7-1-8 探讨timeout属性 589
7-1-9 探讨验证服务的必要设置 589
范例1 示范使用JavaScript异步调用验证服务 591
7-2 如何使用JavaScript异步调用角色服务 599
范例2 示范使用JavaScript异步调用角色服务 601
7-3 如何使用JavaScript异步调用个性化配置文件服务 603
7-3-1 探讨ProfileService类的属性字段 603
7-3-2 探讨ProfileService类的load方法 603
7-3-3 探讨ProfileService类的save方法 604
7-3-4 探讨ProfileService类的defaultFailedCallback属性 605
7-3-5 探讨ProfileService类的defaultLoadCompletedCallback属性 606
7-3-6 探讨ProfileService类的defaultSaveCompletedCallback属性 607
7-3-7 探讨ProfileService类的path属性 607
7-3-8 探讨ProfileService类的timeout属性 608
7-3-9 探讨ProfileGroup类 608
7-3-10 探讨个性化配置文件服务的必要设置 609
范例3 调用个性化配置文件服务来取得与设置页面前景色和背景色 611
结语 621
Chapter 08 如何生成具备客户端功能的组件 622
8-1 如何创建自定义的客户端DOM元素事件 623
8-1-1 如何将事件处理程序绑定到DOM元素事件 623
范例1 示范如何将事件处理程序绑定到DOM元素事件 624
8-1-2 如何创建与删除自定义的事件处理程序 626
8-1-3 如何引发自定义事件 626
8-2 如何创建非可视客户端组件 627
范例2 示范如何创建与使用非可视客户端组件 627
8-3 如何创建客户端行为 634
8-4 如何创建客户端控件 635
范例3 查看客户端控件的执行效果 636
范例4 实现具备鼠标移入、移出与单击功能的客户端控件 641
8-5 如何创建扩展器 648
范例5 示范如何创建与使用扩展器 650
范例6 验证身份证号码的扩展器 655
8-6 如何将扩展器编译成组件 659
8-7 如何创建具备客户端功能的Web服务器控件 663
范例7 示范如何创建与使用具备客户端功能的Web服务器控件 664
范例8 示范如何创建与使用具备验证身份证号码客户端功能的Web服务器控件 668
Appendix A 范例光盘使用说明 670
A-1 安装SQL Server 2005 Express Edition 671
A-2 安装范例数据库并复制范例网站 671
A-3 使用范例 671