ASP.NET2.0服务器控件与组件开发高级编程

ASP.NET2.0服务器控件与组件开发高级编程
作 者: 库斯拉维 郝刚 田亮君 陈文
出版社: 人民邮电出版社
丛编项:
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: .NET
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《ASP.NET2.0服务器控件与组件开发高级编程》作者简介

内容简介

本书是一本专门介绍服务器控件和组件的开发与使用的图书。全书共分为33章,分别介绍了Ajax控件和组件、ASP.NET 2.0 Web部件控件、ASP.NET 2.0安全、ASP.NET 2.0表格式和分层式数据源控件、ASP.NET 2.0表格式数据绑定控件、自定义架构导入扩展和ISerializable接口、基于提供程序的服务等内容。本书可帮助读者学习、掌握服务器控件和组件的各种开发技巧、知识和经验。 本书适合于那些需要学习如何创建自定义服务器控件和组件的读者。作者简介:Shahram Khosravi,在学院期间,Shahram Khosravi是一名软件工程师。在获得学博士学位之后,他继续为一个切割软件开发项目工作。Shahram是一名高级软件工程师、咨询师、作家和讲师。他讲授的课程包括ASP.NET、Web服务、NET技术、XML技术、ADO.NET、C#、3D计算机图形、智能界面(Human Interface,缩写为HI)可用性和设计模式等。他拥有超过10年的面向对象分析、设计和编程经验。Shahram还撰写了大量.NET Framework、ADO.NET、ASP.NET和XML技术的文章。这些文章发表于多个主要的行业杂志上,如Dr.Dobb's Journal、asp.netPRO和Microsoft MSDN Online。他对于应用、教授和撰写有关最新的微软技术抱有极大热情,同时,还为使用这些技术的人们提供咨询和培训服务。

图书目录

第1章 ASP.NET 2.0框架...... 1

1.1 请求过程...... 1

1.2 为什么开发自定义组件...... 4

1.2.1 数据源控件...... 5

1.2.2 角色管理模块和主体...... 5

1.2.3 角色提供程序...... 6

1.2.4 成员资格提供程序...... 6

1.2.5 自定义XML Web服务和客户端...... 6

1.2.6 开发Ajax控件和组件...... 7

1.2.7 开发Web部件控件...... 7

1.2.8 开发自定义数据字段...... 7

1.2.9 开发自定义HTTP处理程序和模块...... 8

1.2.10 开发自定义的基于提供程序的服务...... 8

1.3 小结...... 8

第2章 开发简单的自定义控件和用户控件...... 9

2.1 隐藏信息...... 9

2.2 部署自定义控件...... 14

2.3 在Web页面中使用自定义控件...... 15

2.4 为自定义控件添加属性...... 16

2.5 为自定义控件添加设计时属性...... 19

2.5.1 属性(Property)层次属性(Attribute)...... 19

2.5.2 类层次属性(Attribute)...... 20

2.5.3 程序集层次属性(Attribute)...... 21

2.6 将自定义控件添加到Visual Studio工具箱...... 21

2.7 与HtmlTextWriter相关的枚举...... 22

2.8 状态管理...... 27

2.9 用户控件...... 30

2.9.1 使用用户控件...... 32

2.9.2 为用户控件添加属性...... 33

2.9.3 为用户控件添加方法...... 35

2.9.4 内部揭秘...... 37

2.10 小结...... 38

第3章 开发自定义控件样式...... 39

3.1 Style类...... 39

3.2 WebControl类...... 40

3.2.1 重写Render方法...... 45

3.2.2 TagKey属性...... 45

3.2.3 RenderBeginTag方法...... 45

3.2.4 AddAttributesToRender方法...... 46

3.2.5 RenderContents方法...... 50

3.2.6 RenderEndTag方法...... 50

3.3 继承WebControl类...... 51

3.4 开发自定义Style类...... 56

3.5 使用自定义Style类...... 60

3.6 小结...... 62

第4章 开发自定义控件事件...... 63

4.1 事件介绍...... 63

4.2 .NET事件设计模式...... 64

4.2.1 事件数据和事件委托类...... 64

4.2.2 引发自定义控件事件...... 66

4.3 事件优化...... 68

4.4 回传...... 70

4.4.1 C#接口实现模式...... 73

4.4.2 回传事件...... 74

4.4.3 回传数据...... 74

4.5 页面生命周期...... 84

4.6 小结...... 87

第5章 开发自定义复合控件...... 89

5.1 再次修改CreditCardForm6... 89

5.1.1 呈现HTML... 89

5.1.2 回传功能...... 94

5.2 创建复合控件...... 96

5.2.1 继承CompositeControl类...... 97

5.2.2 选定子控件...... 97

5.2.3 选定布局...... 97

5.2.4 实现自定义容器控件...... 98

5.2.5 创建容器控件...... 99

5.2.6 创建容器控件的子控件...... 100

5.2.7 为容器控件应用样式...... 103

5.2.8 将容器控件添加到复合控件...... 104

5.2.9 呈现容器控件...... 104

5.2.10 CreateChildControls方法:一站式构建子控件...... 105

5.2.11 TagKey属性...... 107

5.2.12 CreateControlStyle方法...... 107

5.2.13 公开样式属性...... 108

5.2.14 RenderContents方法...... 108

5.2.15 Label属性...... 110

5.2.16 事件冒泡...... 112

5.2.17 自定义控件从CompositeControl继承了什么...... 116

5.2.18 重写Controls集合...... 116

5.2.19 INamingContainer接口...... 117

5.3 小结...... 118

第6章 开发自定义模板控件...... 119

6.1 自定义容器控件内容...... 119

6.2 TemplatedCreditCardForm控件...... 121

6.3 在ASP.NET页面中使用模板...... 123

6.4 模板内幕...... 125

6.5 数据绑定表达式...... 128

6.6 数据绑定表达式内幕...... 133

6.7 默认模板...... 135

6.8 小结...... 144

第7章 开发包含复杂属性的自定义控件...... 145

7.1 容器控件的样式属性...... 145

7.2 自定义容器控件外观...... 146

7.3 状态管理...... 148

7.4 实现IStateManager接口的类型...... 150

7.4.1 DefaultTemplateManager类...... 151

7.4.2 TemplatedCreditCardForm3... 156

7.5 不实现IStateManager接口的类型...... 162

7.5.1 TypeConverter类...... 162

7.5.2 DefaultTemplateManager2类...... 163

7.5.3 DefaultTemplateManager2Converter类...... 164

7.5.4 使用转换器标记DefaultTemplateManager2类...... 167

7.5.5 使用不实现IStateManager接口的类...... 167

7.5.6 为什么需要使用TypeDescriptor.. 170

7.6 容器控件样式的状态管理...... 171

7.6.1 声明属性...... 171

7.6.2 TrackViewState方法...... 173

7.6.3 SaveViewState方法...... 174

7.6.4 LoadViewState方法...... 175

7.7 声明持久性...... 176

7.7.1 简单属性...... 176

7.7.2 复杂属性(连字符声明持久性)...... 177

7.7.3 复杂属性(内部属性声明持久性)...... 179

7.8 小结...... 181

第8章 ASP.NET请求处理框架...... 183

8.1 请求过程...... 183

8.2 HTTP模块...... 186

8.3 HTTP处理程序...... 187

8.4 HTTP处理程序工厂...... 188

8.5 控件生成器...... 188

8.6 开发自定义HTTP模块...... 195

8.7 注册自定义HTTP模块...... 198

8.8 开发自定义HTTP处理程序工厂...... 198

8.9 开发自定义HTTP处理程序...... 200

8.9.1 RSS... 200

8.9.2 RssHandler.. 201

8.9.3 注册自定义HTTP处理程序...... 204

8.10 开发自定义控件生成器...... 206

8.10.1 开发自定义控件生成器CompositeCreditCardForm2Builder.. 209

8.10.2 开发自定义控件CompositeCreditCardForm2... 210

8.11 小结...... 215

第9章 数据绑定...... 217

9.1 CustomTable控件...... 217

9.2 设置数据源...... 218

9.3 重写CreateChildControls方法...... 219

9.4 重写DataBind方法...... 221

9.5 创建控件层次...... 222

9.5.1 DataControlField类...... 224

9.5.2 CreateFields方法...... 225

9.5.3 CreateHeaderRow方法...... 227

9.5.4 CreateBodyRow方法...... 228

9.5.5 CachePrimaryKey方法...... 233

9.5.6 CreatePagerRow方法...... 234

9.6 重写CreateControlStyle属方法...... 235

9.7 实现CustomTable事件...... 236

9.8 重写OnBubbleEvent. 237

9.9 CustomTableRow类...... 238

9.10 CustomTableRowCollection类...... 240

9.11 子控件样式...... 241

9.12 重写Render方法...... 242

9.13 状态管理...... 244

9.13.1 TrackViewState方法...... 244

9.13.2 SaveViewState方法...... 245

9.13.3 LoadViewState方法...... 246

9.14 在页面中使用CustomTable控件...... 248

9.15 CustomTable控件的缺点...... 249

9.16 小结...... 249

第10章 XML Web服务...... 251

10.1 开发和使用XML Web服务...... 251

10.2 添加引用按钮背后的秘密...... 254

10.3 WSDL文档...... 257

10.3.1 参数的名称、类型和顺序...... 259

10.3.2 返回值的类型和顺序...... 259

10.3.3 描述方法...... 260

10.3.4 描述访问XML Web服务方法的通信协议...... 261

10.3.5 为方法访问设置站点...... 262

10.3.6 设置方法的类...... 262

10.4 XmlWebServiceMethodInvoker类...... 262

10.4.1 以编程方式下载WSDL文档...... 263

10.4.2 根据WSDL文档反序列化一个.NET对象...... 264

10.4.3 为代理类生成代码...... 265

10.4.4 Import方法背后的秘密...... 266

10.4.5 编译代理类代码...... 269

10.4.6 创建代理类实例...... 270

10.4.7 调用代理类实例中的特定方法...... 270

10.4.8 总结:The InvokeXmlWebServiceMethod方法...... 274

10.5 如何使用XmlWebServiceMethodInvoker.. 275

10.6 缓存编译后的代理类...... 277

10.6.1 缓存相关属性...... 278

10.6.2 CompileCodeForProxyClass方法...... 278

10.6.3 InvokeXmlWebServiceMethod方法...... 280

10.6.4 使用缓存功能...... 281

10.7 开发XML Web服务自定义控件...... 284

10.8 XmlWebServiceResolver组件...... 286

10.8.1 XMLResolver类...... 286

10.8.2 GetEntity方法...... 290

10.9 小结...... 294

第11章 实现架构导入扩展和ISerializable接口...... 295

11.1 实现IXmlSerializable接口...... 295

11.1.1 实现服务器端组件...... 296

11.1.2 开发客户端组件...... 301

11.2 开发自定义架构导入扩展...... 303

11.2.1 使用喜欢的语言编写代码...... 305

11.2.2 CodeDom方法...... 305

11.3 注册自定义架构导入扩展...... 319

11.4 以块化方式发送和接收数据...... 321

11.4.1 BookContent类...... 321

11.4.2 ForumBook类...... 324

11.4.3 自定义架构导入扩展...... 325

11.5 XmlWebServiceMethodInvoker的可扩展能力...... 326

11.6 小结...... 326

第12章 理解ASP.NET 2.0表格式数据源控件模型...... 327

12.1 为什么需要ASP.NET 2.0数据源控件模型...... 327

12.1.1 获取数据...... 329

12.1.2 Update事件...... 330

12.2 ASP.NET 2.0数据源控件模型...... 332

12.3 AS P.NET 2.0表格式数据源控件模型...... 333

12.3.1 IDataSource接口...... 333

12.3.2 DataSourceControl类背后的秘密...... 335

12.3.3 继承DataSourceControl基类...... 336

12.3.4 DataSourceView类...... 338

12.3.5 Delete方法...... 349

12.3.6 Update方法...... 353

12.3.7 Insert方法...... 357

12.3.8 状态管理...... 361

12.4 小结...... 362

第13章 ASP.NET 2.0数据源控件参数模型...... 363

13.1 Parameters类...... 363

13.2 Parameter类...... 366

13.2.1 OnParameterChanged方法...... 366

13.2.2 SaveCurrentValue方法...... 367

13.2.3 Evaluate方法...... 368

13.2.4 CookieParameter组件...... 368

13.2.5 ControlParameter组件...... 369

13.3 ParameterCollection类...... 371

13.3.1 ParametersChanged事件...... 371

13.3.2 OnInsert方法...... 372

13.3.3 GetValues方法...... 372

13.3.4 UpdateValues方法...... 374

13.4 自动调用GetValues和UpdateValues方法...... 374

13.4.1 ParameterCollection类型属性...... 374

13.4.2 OnInit和Page_LoadComplete方法...... 376

13.4.3 ExecuteSelect方法...... 377

13.4.4 ExecuteDelete方法...... 377

13.4.5 ExecuteUpdate方法...... 379

13.4.6 ExecuteInsert方法...... 381

13.5 综合应用...... 383

13.6 开发自定义参数...... 385

13.6.1 XmlWebServiceParameter组件...... 385

13.6.2 ObjectParameter组件...... 389

13.6.3 ClientParameter组件...... 392

13.7 小结...... 397

第14章 开发ASP.NET 2.0自定义表格式数据源控件...... 399

14.1 XmlWebServiceMethodInvoker组件...... 399

14.2 DataSourceControl类...... 401

14.3 DataSourceView类...... 402

14.3.1 ExecuteSelect方法...... 403

14.3.2 ExecuteUpdate方法...... 415

14.3.3 ExecuteInsert方法...... 421

14.3.4 ExecuteDelete方法...... 425

14.4 RetrieveMethodArgumentNamesAndValues方法...... 428

14.5 状态管理...... 430

14.6 小结...... 432

第15章 理解ASP.NET 2.0分层式数据源控件模型...... 433

15.1 IHierarchicalDataSource接口...... 434

15.2 HierarchicalDataSourceControl类...... 435

15.3 HierarchicalDataSourceView类...... 437

15.4 IHierarchyData接口...... 440

15.5 IHierarchicalEnumerable接口...... 441

15.5.1 XmlHierarchyData类...... 444

15.5.2 XmlHierarchicalEnumerable类...... 450

15.5.3 XmlHierarchyDataPropertyDescriptor类...... 451

15.5.4 ICustomTypeDescriptor接口...... 453

15.5.5 XmlHierarchicalDataSourceView.... 455

15.6 小结...... 456

第16章 开发ASP.NET 2.0自定义分层式数据源控件...... 457

16.1 CustomSqlDataSource控件...... 457

16.2 SqlHierarchyDataPropertyDescriptor类...... 463

16.3 SqlHierarchyData类...... 466

16.3.1 构造函数...... 466

16.3.2 实现HasChildren属性...... 467

16.3.3 实现Type属性...... 467

16.4 SqlHierarchicalEnumerable类...... 469

16.5 SqlHierarchicalDataSourceView类...... 471

16.6 小结...... 472

第17章 理解ASP.NET 2.0表格式数据绑定控件模型...... 473

17.1 本章概述...... 473

17.2 ASP.NET 1.x数据绑定控件模型...... 475

17.2.1 RetrieveData方法...... 475

17.2.2 重写DataBind方法...... 476

17.2.3 处理第3个数据绑定任务...... 476

17.3 BaseDataBoundControl类...... 477

17.3.1 自动调用DataBind方法...... 477

17.3.2 第一个和第二个数据绑定任务...... 478

17.3.3 第3个数据绑定任务...... 478

17.4 开发继承自BaseDataBoundControl的自定义数据绑定控件...... 480

17.4.1 处理Load事件...... 481

17.4.2 重写PerformSelect方法...... 481

17.4.3 以声明方式编程而不编写代码...... 483

17.4.4 CustomTable2控件的不足...... 484

17.5 DataBoundControl类...... 484

17.5.1 GetDataSource方法...... 485

17.5.2 GetData方法...... 486

17.5.3 重写BaseDataBoundControl的抽象方法...... 486

17.6 开发继承自DataBoundControl的自定义数据绑定控件...... 490

17.6.1 重写CreateDataSourceSelectArguments方法...... 490

17.6.2 重写PerformDataBinding方法...... 492

17.6.3 UpdateCallback方法...... 492

17.6.4 DeleteCallback方法...... 494

17.6.5 以声明方式实现针对未知数据的无代码编程...... 495

17.7 CompositeDataBoundControl类...... 496

17.7.1 重写PerformDataBinding方法...... 497

17.7.2 重写DataBind方法...... 498

17.7.3 重写CreateChildControls方法...... 498

17.7.4 重写Controls集合...... 499

17.8 开发继承自CompositeDataBoundControl的控件...... 499

17.8.1 MasterDetailForm控件...... 500

17.8.2 AddDetailRow方法...... 505

17.8.3 AddMasterCell方法...... 507

17.8.4 AddMasterHeaderCell方法...... 508

17.8.5 AddMasterSelectButton方法...... 508

17.8.6 AddDetailCommandBar方法...... 509

17.8.7 Delete数据操作...... 511

17.8.8 Update数据操作...... 512

17.8.9 Sort操作...... 513

17.8.10 控件状态...... 514

17.8.11 外观属性...... 516

17.8.12 无需编程实现主/从表...... 516

17.9 小结...... 518

第18章 ASP.NET 2.0数据控件字段模型...... 519

18.1 为什么需要ASP.NET 2.0数据控件字段模型...... 519

18.2 DataControlField组件...... 521

18.2.1 OnFieldChanged方法...... 523

18.2.2 Initialize方法...... 524

18.2.3 InitializeCell方法...... 524

18.2.4 ExtractValuesFromCell方法...... 525

18.3 BoundField... 526

18.3.1 InitializeCell方法...... 526

18.3.2 InitializeDataCell方法...... 527

18.3.3 OnDataBindField方法...... 527

18.3.4 GetValue方法...... 528

18.3.5 ExtractValuesFromCell方法...... 530

18.4 DataControlFieldCollection组件...... 531

18.4.1 FieldsChanged事件...... 531

18.4.2 OnInsert方法...... 532

18.5 开发自定义数据控件字段...... 532

18.5.1 DropDownListField... 533

18.5.2 CalendarField... 541

18.6 小结...... 546

第19章 开发ASP.NET 2.0自定义表格式数据绑定控件...... 547

19.1 继承自CompositeDataBoundControl. 548

19.2 重写CreateChildControls方法...... 548

19.2.1 初始化参数...... 550

19.2.2 描述主键字段...... 551

19.2.3 创建Table子控件...... 552

19.2.4 创建PagedDataSource对象...... 553

19.2.5 创建数据控件字段...... 554

19.2.6 创建顶部分页行...... 559

19.2.7 创建标题行...... 562

19.2.8 枚举数据记录...... 563

19.2.9 创建空数据行...... 565

19.2.10 创建和填充GridViewRowCollection... 566

19.2.11 CreateRow方法...... 567

19.2.12 InitializeRow方法...... 567

19.3 重写CreateDataSourceSelectArguments方法...... 568

19.4 重写CreateControlStyle方法...... 570

19.5 重写OnBubbleEvent方法...... 570

19.6 重写Render方法...... 578

19.7 状态管理...... 582

19.8 重写OnInit方法...... 584

19.9 事件...... 584

19.10 GridViewRow类...... 587

19.11 GridViewRowCollection类...... 591

19.12 小结...... 591

第20章 为什么需要ASP.NET 2.0成员资格/角色模型...... 593

20.1 ASP.NET 1.x安全模型...... 593

20.2 授权机制...... 599

20.3 ASP.NET 1.x安全模型的缺点...... 600

20.4 .NET 2.0提供程序模式...... 601

20.5 小结...... 602

第21章 理解ASP.NET 2.0成员资格模型...... 603

21.1 Membership类...... 603

21.1.1 成员资格提供程序的初始化和实例化...... 603

21.1.2 <membership>节...... 604

21.1.3 Provider和Providers属性...... 605

21.2 成员资格API.. 609

21.2.1 将新用户添加到数据存储中...... 609

21.2.2 从数据存储中删除用户...... 610

21.2.3 在数据存储中更新指定用户成员资格信息...... 611

21.2.4 根据数据存储验证用户凭证...... 611

21.2.5 在数据存储中查找用户...... 611

21.2.6 从数据存储中获取用户成员资格信息...... 613

21.2.7 强制设置应用程序特定的密码验证规则...... 614

21.2.8 访问用户在线时间窗口...... 616

21.3 开发自定义安全控件...... 617

21.3.1 Login控件...... 617

21.3.2 Register控件...... 622

21.3.3 使用Login和Register控件...... 624

21.3.4 注册SqlMembershipProvider.. 626

21.4 MembershipUser类...... 627

21.4.1 访问成员资格提供程序...... 629

21.4.2 重置并获取密码...... 629

21.4.3 修改密码...... 630

21.4.4 修改密码问题和答案...... 631

21.4.5 用户解锁...... 631

21.5 小结...... 632

第22章 开发自定义MembershipProvider和MembershipUser组件...... 633

22.1 MembershipProvider类...... 633

22.2 SqlMembershipProvider类...... 635

22.3 ProviderBase基类...... 635

22.4 MembershipProvider类...... 641

22.4.1 ChangePassword方法...... 642

22.4.2 ValidateUserInfo方法...... 644

22.4.3 UpdateUserInfo方法...... 648

22.4.4 Update方法...... 649

22.4.5 ChangePasswordQuestionAndAnswer方法...... 650

22.4.6 CreateUser方法...... 651

22.4.7 DeleteUser方法...... 656

22.4.8 FindUsersByEmail方法...... 657

22.4.9 FindUsersByName方法...... 658

22.4.10 GetAllUsers方法...... 660

22.4.11 Select方法...... 661

22.4.12 GetNumberOfUsersOnline方法...... 662

22.4.13 GetPassword方法...... 662

22.4.14 GetUser方法...... 665

22.4.15 GetUserNameByEmail方法...... 668

22.4.16 ResetPassword方法...... 668

22.4.17 UnlockUser方法...... 671

22.4.18 UpdateUser方法...... 672

22.4.19 ValidateUser方法...... 672

22.5 注册SqlMembershipProvider.. 673

22.6 使用自定义成员资格提供程序...... 674

22.7 扩展ASP.NET 2.0成员资格API.. 675

22.7.1 CustomMembershipUser类...... 676

22.7.2 CustomMembershipProvider类...... 677

22.7.3 CustomSqlMembershipProvider类...... 678

22.7.4 使用CustomMembershipUser、CustomMembershipProvider和

CustomSqlMembershipProvider.. 684

22.8 小结...... 686

第23章 理解ASP.NET角色管理模型...... 687

23.1 角色管理API.. 687

23.1.1 管理角色...... 688

23.1.2 管理用户...... 689

23.2 RolePrincipal类...... 691

23.2.1 身份...... 691

23.2.2 角色成员...... 692

23.2.3 IPrincipal接口...... 692

23.3 RoleManagerModule类...... 697

23.3.1 PostAuthenticateRequestCallback方法...... 698

23.3.2 GetRoles事件...... 699

23.3.3 EndRequestCallback方法...... 701

23.4 小结...... 702

第24章 开发自定义角色提供程序、模块和主体...... 703

24.1 RoleProvider基类...... 703

24.2 XmlRoleProvider.. 704

24.3 ProviderBase类...... 705

24.4 XML API.. 706

24.4.1 流XML API.. 707

24.4.2 随机访问XML API.. 711

24.5 实现RoleProvider类的方法...... 713

24.5.1 LoadData方法...... 714

24.5.2 SaveData方法...... 714

24.5.3 角色管理...... 715

24.5.4 用户管理...... 727

24.6 开发自定义角色主体...... 739

24.6.1 构造函数...... 740

24.6.2 GetRoles方法...... 742

24.6.3 实现IPrincipal接口...... 743

24.7 开发自定义角色管理模块...... 744

24.7.1 PostAuthenticateRequestCallback方法...... 745

24.7.2 GetRoles事件...... 747

24.7.3 EndRequestCallback方法...... 748

24.7.4 XmlRoleProvider和CacheDependency... 750

24.8 使用XmlRoleProvider.. 751

24.9 小结...... 756

第25章 开发基于提供程序的自定义服务...... 757

25.1 开发基于提供程序的自定义服务的方法...... 757

25.2 基于提供程序的RSS服务...... 758

25.3 自定义提供程序基类...... 759

25.4 自定义提供程序集合...... 760

25.5 配置Web.config和Machine.config文件...... 760

25.5.1 自定义配置节...... 761

25.5.2 注册<rssService>节...... 762

25.6 实现Service类...... 763

25.7 使用RSS服务...... 765

25.8 SqlRssProvider类...... 766

25.8.1 Initialize方法...... 766

25.8.2 LoadRss方法...... 772

25.8.3 GetDataReader方法...... 774

25.8.4 注册SqlRssProvider.. 774

25.9 RssHelper类...... 775

25.10 XmlRssProvider类...... 777

25.10.1 Initialize方法...... 778

25.10.2 LoadRss方法...... 781

25.10.3 RetrieveData方法...... 783

25.10.4 注册XmlRssProvider.. 784

25.11 小结...... 785

第26章 开发Ajax控件和组件:客户端功能...... 787

26.1 Ajax组件和控件...... 787

26.2 Ajax控件客户端功能的实现方法...... 789

26.3 呈现方式...... 790

26.3.1 将脚本呈现为HTML属性值...... 790

26.3.2 将客户端脚本呈现为脚本块...... 792

26.3.3 客户端脚本库...... 799

26.4 部署...... 802

26.4.1 将源文件部署到一个共享位置...... 803

26.4.2 将源文件嵌入程序集...... 803

26.5 呈现控件的客户端脚本的时机...... 811

26.5.1 禁用控件的客户端功能...... 811

26.5.2 检查请求浏览器的Ajax功能...... 812

26.6 呈现控件的客户端脚本的位置...... 813

26.6.1 重写OnPreRender方法...... 814

26.6.2 重写AddAttributesToRender方法...... 814

26.6.3 重写RenderContents方法...... 814

26.6.4 重写Render方法...... 815

26.7 退回到服务器端代码...... 815

26.8 开发Ajax控件...... 816

26.8.1 Ajax控件CustomImage.. 817

26.8.2 Ajax复合控件ImageDialog... 825

26.9 小结...... 840

第27章 开发Ajax控件和组件:异步客户端回调...... 841

27.1 为什么使用AjaxDropDownList控件...... 842

27.2 客户端回调机制...... 843

27.3 实现ASP.NET 2.0客户端回调机制...... 843

27.3.1 重写OnPreRender方法...... 844

27.3.2 重写Render方法...... 851

27.3.3 服务器端...... 852

27.4 ASP.NET 2.0客户端回调机制...... 853

27.4.1 重写OnPreRender方法...... 854

27.4.2 重写Render方法...... 856

27.4.3 服务器端...... 857

27.5 未知类型数据存储Ajax控件...... 858

27.6 主/次窗体...... 862

27.7 开发Ajax数据控件字段...... 863

27.8 AjaxDetailsDialog控件...... 866

27.8.1 将AjaxDetailsDialog实现为复合控件...... 869

27.8.2 将AjaxDetailsDialog实现为Ajax控件...... 872

27.9 AjaxField数据控件字段...... 879

27.9.1 重写InitializeCell方法...... 879

27.9.2 重写OnDataBindField方法...... 882

27.9.3 实现CreateField方法...... 884

27.9.4 重写ExtractValuesFromCell方法...... 884

27.10 DropDownListField2控件...... 885

27.10.1 重写InitializeCell方法...... 885

27.10.2 重写CreateField方法...... 888

27.10.3 重写ExtractValuesFromCell方法...... 888

27.11 Ajax控件CustomGridView.... 888

27.11.1 重写CreateChildTable方法...... 888

27.11.2 重写PrepareControlHierarchy方法...... 891

27.12 小结...... 897

第28章 开发Ajax控件和组件:Ajax模式...... 899

28.1 模式...... 899

28.2 Google的XML Web服务API.. 900

28.3 预测式获取(Predictive Fetch)模式...... 908

28.3.1 继承自WebControl基类...... 910

28.3.2 实现ICallbackEventHandler接口...... 927

28.4 小结...... 930

第29章 开发Ajax控件和组件:更多的Ajax模式...... 931

29.1 周期式刷新(Periodic Refresh)模式...... 931

29.1.1 继承自WebControl基类...... 932

29.1.2 实现ICallbackEventHandler接口...... 934

29.2 提交节流(Submission Throttling)模式...... 941

29.2.1 重写OnPreRender方法...... 942

29.2.2 重写Render方法...... 944

29.2.3 JavaScript函数...... 954

29.3 显式提交(Explicit Submission)模式...... 961

29.3.1 重写OnPreRender方法...... 961

29.3.2 重写Render方法...... 963

29.3.3 实现ICallbackEventHandler接口...... 965

29.3.4 JavaScript函数...... 966

29.4 小结...... 967

第30章 理解ASP.NET 2.0 Web部件框架...... 969

30.1 什么是ASP.NET Web部件框架...... 969

30.2 以声明方式开发WebPart控件...... 971

30.3 移动WebPart控件...... 975

30.4 个性化WebPart控件的属性...... 979

30.5 个性化WebPart控件的自定义属性...... 982

30.6 添加已声明的WebPart控件...... 984

30.7 添加已关闭的WebPart控件...... 986

30.8 导出WebPart控件...... 988

30.9 添加导入的WebPart控件...... 991

30.10 Web部件框架的主要组件...... 993

30.11 Part基类...... 994

30.12 小结...... 996

第31章 开发自定义WebPart、EditorPart和CatalogPart控件...... 997

31.1 WebPart基类...... 997

31.2 开发自定义WebPart控件...... 1001

31.2.1 CreateChildControls方法...... 1002

31.2.2 AddContainer方法...... 1004

31.2.3 AddItemToContainer方法...... 1004

31.2.4 使用RssReaderWebPart控件...... 1005

31.3 实现IWebPart接口...... 1006

31.4 IWebActionable接口...... 1006

31.4.1 开发自定义Web部件谓词...... 1008

31.4.2 开发支持自定义Web部件谓词的WebPart控件...... 1009

31.5 EditorPart基类...... 1014

31.6 开发自定义EditorPart控件...... 1015

31.6.1 将RssReaderEditorPart作为复合控件...... 1016

31.6.2 SyncChanges方法...... 1021

31.6.3 ApplyChanges方法...... 1022

31.6.4 OnLoad方法...... 1024

31.6.5 RssReaderWebPart4控件...... 1024

31.7 CatalogPart基类...... 1034

31.8 开发自定义CatalogPart控件...... 1038

31.8.1 GetAvailableWebPartDescriptions方法...... 1040

31.8.2 LoadWebPartInfoSet方法...... 1044

31.8.3 GetWebPart方法...... 1045

31.8.4 LoadWebPartDescriptionFile方法...... 1046

31.8.5 使用XmlWebServiceCatalogPart控件...... 1046

31.9 小结...... 1052

第32章 开发自定义WebPartZoneBase控件...... 1053

32.1 WebZone基类...... 1053

32.2 WebPartZoneBase基类...... 1056

32.2.1 继承自WebZone基类...... 1057

32.2.2 CreateWebPartChrome方法...... 1059

32.2.3 CreateInitialWebParts方法...... 1059

32.2.4 CreateVerbs事件...... 1059

32.2.5 实现IPostBackEventHandler接口...... 1060

32.3 WebPartZone类...... 1063

32.4 开发自定义WebPartZone控件...... 1065

32.4.1 XmlWebServiceWebPartZone类...... 1065

32.4.2 ProviderBasedWebPartZone类...... 1071

32.4.3 SqlDescriptionDocumentProvider类...... 1085

32.5 WebPartChrome类...... 1088

32.5.1 RenderWebPart方法...... 1089

32.5.2 PerformPreRender方法...... 1093

32.6 开发自定义WebPartChrome.. 1094

32.6.1 CustomWebPartZone类...... 1097

32.6.2 使用CustomWebPartChrome控件...... 1097

32.7 小结...... 1098

第33章 WebPartManager、Web部件连接和数据绑定WebPart控件...... 1099

33.1 开发自定义WebPartManager控件...... 1099

33.2 连接WebPart控件...... 1103

33.2.1 实现提供者和订阅者WebPart控件...... 1112

33.2.2 动态连接...... 1118

33.2.3 以编程方式实现连接...... 1123

33.3 开发数据绑定WebPart控件...... 1132

33.3.1 BaseDataBoundWebPart基类...... 1133

33.3.2 DataBoundWebPart基类...... 1135

33.3.3 CompositeDataBoundWebPart基类...... 1137

33.3.4 GridViewWebPart控件...... 1138

33.3.5 MasterDetailGridViewWebPart控件...... 1140

33.4 小结...... 1145