當您開始使用 Microsoft .NET Framework 2.0 和 ASP.NET 時,您會發現新 的 Web 部件基礎結構將一些非常強大的功能添加到了基礎平台中。對於本文, 我假設您已經對 Web 部件的基本知識有所了解,例如,如何使用 WebPartManager 控件、Web 部件區域、編輯器、目錄和持久性屬性。
創建用於ASP.NET 2.0應用程序的Web部件
您可以用兩種方法創建 Web 部件。第一種方法涉及創建一個自定義的 Web 部件類,該類從 System.Web.UI.WebControls.WebParts 命名空間中定義的 WebPart 類繼承。使用該方法時,將自定義的 Web 部件類打包到一個程序集 DLL 中通常是有意義的,因為這樣可以提供對重用、版本控制和 Visual Studio 2005 集成的更多控制。如果您對使用以前的 ASP.NET 版本生成自定義控件很熟 悉,則許多相同的技術適用於將自定義的 Web 部件生成到 DLL 程序集中。
用於創建 ASP.NET 2.0 Web 部件的第二種方法涉及使用用戶控件。雖然該方 法不產生相同的重用和版本控制級別,但是它的確允許您使用 Visual Studio 窗體設計器來創建 Web 部件的用戶界面部分。如果您想通過將用於用戶輸入、 驗證和數據綁定的控件拖放到設計界面上來創建應用程序,則該方法適合於您。 當然,如果您已經花時間創建了一個您想用作 Web 部件的用戶控件,它也是個 可以采用的好方法。
當創建一個專門設計為 Web 部件的用戶控件時,建議您實現 IWebPart 接口 。這樣,Web 部件後台的代碼就可通過編程方式分配自己的幾個內部 Web 部件 屬性,如它的 Title 和 TitleIconUrl。
本文附帶的代碼示例使用一個名為 WebPartBase 的自定義基類,該基類從 UserControl 繼承並實現 IwebPart。該基類的定義部署在 App_Code 目錄中名 為 WebPartBase.vb 的源文件中。每當您使用用戶控件創建一個新 Web 部件時 ,只需在該代碼隱藏文件中更改該基類以利用該技術:
Partial Class WebParts_Customers
Inherits WebPartBase
Sub New()
Title = "Northwind Customer List"
TitleIconImageUrl = "~\img\Customers.gif"
End Sub
End Class
設計可連接的 Web 部件
使用 Web 部件連接,您可以使用戶更輕松地形象化數據各項之間存在的關系 。例如,Web 部件連接可以建模一個主-從方案,其中顯示客戶列表的 Web 部件 連接到另一個顯示當前所選客戶詳細信息的 Web 部件。圖 1 的示例說明這種設 計可能生成的用戶界面外觀。
圖 1
Web 部件連接還可用於建模一對多關系。例如,顯示客戶列表的 Web 部件可 以連接到另一個顯示針對當前所選客戶的所有定單的 Web 部件。
通常使用 Web 部件連接建模的另一個方案是表單查詢。在這種方案中,一個 Web 部件提供一個用戶界面,該用戶界面允許用戶選擇查詢數據(如數據庫表) 時所用的搜索或篩選條件。然後,該 Web 部件連接到另一個顯示查詢結果的 Web 部件。Web 部件連接用於在運行查詢前,將篩選條件從一個 Web 部件傳遞 到另一個 Web 部件。
Web 部件連接基於提供者和使用者的概念。提供者 Web 部件通過一個編程接 口為一個或多個使用者 Web 部件提供信息。提供者和使用者之間交換的信息可 以是簡單的數據項(如數字或字符串),也可以是較特殊的內容(如對一個復雜 數組或自定義對象集合的引用)。
如果針對 Windows SharePoint Services 2.0 (WSS) 編寫了 Web 部件,您 可能已經熟悉它用於連接 Web 部件的模型。在 WSS 中,Web 部件只能使用一組 預定義的接口對連接。這些接口對的示例包括 ICellProvider 和 ICellConsumer,以及 IRowProvider 和 IRowConsumer。
ASP.NET 2.0 中的 Web 部件連接模型比 WSS 中的舊式模型更容易、更靈活 ,因為您可以使用自己的自定義接口。這意味著您無需使用由 Microsoft 人員 創建的接口定義。而且,您無需對接口對進行任何操作,它們必須由提供者和使 用者實現。使用 ASP.NET 2.0,只有提供者需要實現一個接口。
要了解其工作方式,我們先在兩個 Web 部件之間創建一個連接。對於我要在 本月專欄中提供的示例,我決定使用 Northwind 數據庫,因為它有一個 Customers 表和一個 Orders 表。這使我能為您展示如何針對主-從和一對多關 系設計 Web 部件。有一點需要注意,如果使用 SQL Server 2005,則在產品安 裝過程中並不安裝該示例 Northwind 數據庫。要安裝它,您必須下載並運行 Microsoft Web 站點上可用的腳本。
現在,假設您要在一個顯示客戶列表的 Web 部件和一個顯示當前所選客戶的 詳細信息的客戶 Web 部件之間建立一個 Web 部件連接,如圖 1所示。顯示客戶 列表的 Web 部件將扮演提供者的角色,而顯示當前所選客戶的詳細信息的 Web 部件則作為使用者。在這種情況下,您希望提供者為使用者提供當前所選客戶的 CustomerID 字段。
首先,創建一個名為 ICustomerIDProvider 的簡單接口:
Public Interface ICustomerIDProvider
ReadOnly Property CustomerID() As String
End Interface