當您開始使用 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