创建一个可以绑定数据的 ASP.NET Web 部件控件

通过对 WebPart 基类的继承,你可以给予 Web 部件以普通服务器控件的数据绑定能力。在 Web 部件应用程序中,终端用户能够更改(或者个性化)服务器控件的行为和用户界面(UI),并且把设定保存到长期存储中以用于将来的浏览器会话。用户能够通过添加或删除控件、编辑控件的属性和外观、重新整理页面的布局、导入或导出控件的设定、甚至组建允许控件共享数据的连接的方式彻底地改变页面的外观和感觉。更多关于 Web 部件应用程序的学习,请参考:ASP.NET Web 部件页面。该文章描述了在 Web 部件应用程序中使用自定义 WebPart 数据绑定控件(或者任何服务器控件)时的先决条件,并概述了在创建自定义控件的时候,WebPart 类中经常需要用来实现或者覆盖的成员。覆盖并实现这些成员的实例在[Web 部件的数据绑定控件实例]中被提供。

使用 Web 部件控件时所必需的元素

没有任何一个 Web 部件控件能够在隔离模式中运行的同时仍然保持着它的 Web 部件特征。如果你在 Web 应用程序中运行 WebPart 控件的时候没有使用其他的必需元素,那么这个控件就会完全失去它的 Web 部件特征并且变成一个普通的服务器控件。下面的列表说明了在使用自定义 WebPart 控件之前必须要使用的元素:

  • WebPartManager 控件。这个控件必须在每一个提供了 Web 部件功能的页面中被呈现。关于详细内容,请参考:[Web 部件控件集概览]。

  • 一个 WebPartZoneBase 区域控件。Web 页面必须有一个继承自这个抽象类的区域(如 WebPartZone 控件),用来包含 WebPart 控件。关于详细内容,请参考:[Web 部件控件集概览]。

  • 一个能够使用 Windows 或 Forms 验证机制来识别单独用户的 ASP.NET 网站。要创建虚拟目录或网站的详细内容,请参考:[ASP.NET 实践:在 IIS 中创建并配置虚拟目录]或者[ASP.NET 实践:在 IIS 中创建并配置本地 ASP.NET 网站]。

  • 一个已配置的个性化提供者和数据库,用来保存控件中的用户设定。Web 部件的个性化在默认的时候是被启用的,并且它与 Microsoft SQL Server Express(SSE)版本一起使用 SQL 个性化提供者(SqlPersonalizationProvider)来保存个性化数据。该实践使用了 SSE 和默认的 SQL 提供者。如果你已经安装了 SSE,则不需要进行配置。SSE 是 Microsoft Visual Studio 2005 安装中的一个可选部分,或者可以从 Microsoft.com 免费下载。要使用 Microsoft SQL Server 的一个完整版本,你必需安装并配置一个 ASP.NET 应用程序服务数据库,还要配置 SQL 个性化提供者来连接到该数据库。关于详细内容,请参考:[为 SQL Server 创建并配置应用程序服务数据库]。你同样能够创建并配置一个自定义的提供者来使用其他的非 SQL 数据库或者存储方案。关于详细内容以及代码实例,请参考:[实现成员资格提供者]。

经常被重载或者被使用的 WebPart 成员

虽然在 Web 部件应用程序中能够使用任何类型的服务器控件,但是使用自定义的 WebPart 控件(详细内容,请参考:[在 Web 部件应用程序中使用 ASP.NET 服务器控件])仍然有一些好处。当你继承自 WebPart 基类的时候,并不需要实现任何成员。但是,你仍然有可能需要使用并且重载一些常用的成员,下表就对这些成员进行概述。关于被实现成 WebPart 控件的服务器数据绑定控件的完整实例,请参考:[Web 部件的数据绑定控件实例]。下表中对常用的成员进行概述。

成员 描述

WebPart

这个构造器的通常用法就是为检测 WebPart 控件的外观和行为的属性而设置默认值,这与继承自 Part 类的属性集、或者类似于 AllowEdit 和 AllowLayoutChange 等行为属性一样。

行为属性

包括该类中的一系列 Allow 属性,如 AllowClose、AllowConnect、AllowEdit、AllowMinimize、AllowLayoutChange、以及 AllowZoneChange。胜于在构造器中为这些属性指定默认值,开发者能够完全地控制属性,例如,为了防止使用控件的用户或者开发者关闭控件。

CreateChildControls

当你从 WebPart 类继承自定义控件的时候,你需要为自定义控件提供一个 UI。有一个非常高效的方法就是重载 CreateChildControls 方法,并且在该方法中,添加其他的服务器控件来为自定义控件建立 UI。当你在添加这些控件的时候,你可能需要完成额外的任务,比如为它们创建自定义事件处理器、或者把它们绑定到数据源。

呈现方法

你可能需要重载公共的呈现方法(如 RenderControl 或 RenderContents 方法)。在这些方法中,你既能够完全地对呈现进行重载、也可以先调用基类的方法,然后对呈现的外观进行更改。

Verbs

如果你创建了将与标准动作一起出现在控件动作菜单中的自定义 WebPartVerbs 对象(如关闭或最小化),那么你必须把它们添加到控件的 Verbs 集合中。

CreateEditorParts

如果你创建了自定义的 EditorPart 控件,并用来允许用户编辑控件中的自定义属性,那么你必须通过重载 CreateEditorParts 方法来把它们关联到你的控件中。关于实例,请参考:[IWebEditable 接口]。

PersonalizableAttribute

当你在 WebPart 控件中创建了自定义属性,你将经常需要用户对这些属性进行编辑并且个性化,与标准的 WebPart 控件属性一样,这样属性的值才能够被保存。所以,请为任何能够被用户个性化的属性添加 Personalizable 元数据参数。

WebPart 数据绑定控件实例

关于演示如何创建绑定到 Northwind 数据库的 System.Web.UI.WebControls.GridView 控件、并且把该控件实现成 WebPart 控件的完整代码实例,请参考:[Web 部件的数据绑定控件实例]。

你可能感兴趣的:(asp.net)