WebPartManager.ConnectWebParts 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
建立 WebPart 區域中兩個 WebPartZoneBase 控制項 (或能建立連接的其他伺服器控制項) 之間的連接。
多載
ConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) |
只使用控制項的參考及其指定的 WebPart 物件,建立兩個 GenericWebPart (或 ConnectionPoint) 控制項之間的連接。 |
ConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) |
使用控制項的參考、其指定的 WebPart 物件和 GenericWebPart 物件,建立兩個 ConnectionPoint (或 WebPartTransformer) 控制項之間的連接。 |
備註
方法 ConnectWebParts 會在任何兩 WebPart 個可連接的控件之間建立連接。 在呼叫這個方法以建立連接之前,您可能也會想要在條件式檢查中呼叫 CanConnectWebParts 方法,以確保控件符合形成連接的需求。
注意
您也可以在兩個不是 WebPart 控件的伺服器控制元件之間建立連線。 一般而言,這兩個控件必須是自定義伺服器控件 (,例如繼承自 WebControl 或現有 ASP.NET 伺服器控件的控件) ,以便您可以新增必要的成員。 控件也必須符合下列指定的需求。
兩個控件之間的任何類型的連線案例都必須符合下列需求,才能連線:
每個控件都 WebPartZoneBase 位於區域中, (它不需要是相同的區域) 。
如同在 Web 元件控制項集中實作,連接中的提供者控制件會將介面實作為公用方法,做為提供者的回呼,並在方法上具有
ConnectionProvider
元數據屬性,可將它識別為提供者連接點。 GetProviderConnectionPoints因為擷取提供者連接點的方法是虛擬的,所以衍生WebPartManager控件不一定要使用相同的元數據屬性。如同在 Web 元件控制項集中實作,連線中的取用者控制者也有特殊的方法,可讓它取得提供者回呼方法中公開之介面的參考,而取用者在方法上具有
ConnectionConsumer
元數據屬性,可將它識別為取用者連接點。 GetConsumerConnectionPoints因為擷取者連接點的方法是虛擬的,所以衍生WebPartManager控件不一定要使用相同的元數據屬性。回呼方法必須相容,也就是說,取用者可以使用提供者回呼方法中提供的介面類型 (表示取用者和提供者可以直接) 共用數據,或者開發人員必須使用 WebPartTransformer 物件,將數據從提供者轉換成取用者可以使用的格式。
ConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint)
只使用控制項的參考及其指定的 WebPart 物件,建立兩個 GenericWebPart (或 ConnectionPoint) 控制項之間的連接。
public:
System::Web::UI::WebControls::WebParts::WebPartConnection ^ ConnectWebParts(System::Web::UI::WebControls::WebParts::WebPart ^ provider, System::Web::UI::WebControls::WebParts::ProviderConnectionPoint ^ providerConnectionPoint, System::Web::UI::WebControls::WebParts::WebPart ^ consumer, System::Web::UI::WebControls::WebParts::ConsumerConnectionPoint ^ consumerConnectionPoint);
public System.Web.UI.WebControls.WebParts.WebPartConnection ConnectWebParts (System.Web.UI.WebControls.WebParts.WebPart provider, System.Web.UI.WebControls.WebParts.ProviderConnectionPoint providerConnectionPoint, System.Web.UI.WebControls.WebParts.WebPart consumer, System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint consumerConnectionPoint);
member this.ConnectWebParts : System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ProviderConnectionPoint * System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint -> System.Web.UI.WebControls.WebParts.WebPartConnection
Public Function ConnectWebParts (provider As WebPart, providerConnectionPoint As ProviderConnectionPoint, consumer As WebPart, consumerConnectionPoint As ConsumerConnectionPoint) As WebPartConnection
參數
- providerConnectionPoint
- ProviderConnectionPoint
方法,做為連接的回呼方法。 當 Web 組件控制集實作時,這是 provider
中標記著 ConnectionProvider
中繼資料屬性的公用方法。
- consumerConnectionPoint
- ConsumerConnectionPoint
與 providerConnectionPoint
連接的方法,以接收連接資料。 當 Web 組件控制集實作時,這是 consumer
中標記著 ConnectionConsumer
中繼資料屬性的公用方法。
傳回
WebPartConnection,包含連接所需之提供者和消費者的各種相關資訊。
例外狀況
WebPartManager 控制項的動態連接集合是唯讀。
範例
下列程式代碼範例示範如何使用這個方法來以程序設計方式建立連線。 如需執行範例所需的完整程式碼,請參閱類別概觀的 WebPartManager 範例一節。 在該範例中,您需要使用者控件的原始程式碼,這可讓您變更頁面上的顯示模式,以及兩個自定義 WebPart 控件的原始程式碼。
裝載兩個控件的網頁程序代碼如下。 頁面使用 Register
頂端的 指示詞來宣告使用者控制項和自定義控制件。 然後,自定義控件會在 元素內 <asp:webpartzone>
以宣告方式參考。 處理 方法的程式 Button1_Click
代碼會使用 ConnectWebParts 方法,在控件之間建立連接。
<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc1"
TagName="DisplayModeMenuCS"
Src="~/displaymodemenucs.ascx" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.CS.Controls"
Assembly="ConnectionSampleCS"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
ProviderConnectionPoint provPoint =
mgr.GetProviderConnectionPoints(zip1)["ZipCodeProvider"];
ConsumerConnectionPoint connPoint =
mgr.GetConsumerConnectionPoints(weather1)["ZipCodeConsumer"];
WebPartConnection conn1 = mgr.ConnectWebParts(zip1, provPoint,
weather1, connPoint);
}
protected void mgr_DisplayModeChanged(object sender,
WebPartDisplayModeEventArgs e)
{
if (mgr.DisplayMode == WebPartManager.ConnectDisplayMode)
Button1.Visible = true;
else
Button1.Visible = false;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="mgr" runat="server"
OnDisplayModeChanged="mgr_DisplayModeChanged">
</asp:WebPartManager>
<uc1:DisplayModeMenuCS ID="menu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:ZipCodeWebPart ID="zip1" runat="server"
Title="Zip Code Provider" />
<aspSample:WeatherWebPart ID="weather1" runat="server"
Title="Zip Code Consumer" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:ConnectionsZone ID="ConnectionsZone1" runat="server">
</asp:ConnectionsZone>
<asp:Button ID="Button1" runat="server"
Text="Connect WebPart Controls"
OnClick="Button1_Click"
Visible="false" />
</div>
</form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register TagPrefix="uc1"
TagName="DisplayModeMenuVB"
Src="~/displaymodemenuvb.ascx" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.VB.Controls"
Assembly="ConnectionSampleVB"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
Dim provPoint As ProviderConnectionPoint = _
mgr.GetProviderConnectionPoints(zip1)("ZipCodeProvider")
Dim connPoint As ConsumerConnectionPoint = _
mgr.GetConsumerConnectionPoints(weather1)("ZipCodeConsumer")
mgr.ConnectWebParts(zip1, provPoint, weather1, connPoint)
End Sub
Protected Sub mgr_DisplayModeChanged (ByVal sender as Object, _
ByVal e as WebPartDisplayModeEventArgs)
If mgr.DisplayMode is WebPartManager.ConnectDisplayMode Then
Button1.Visible = True
Else
Button1.Visible = False
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="mgr" runat="server"
OnDisplayModeChanged="mgr_DisplayModeChanged">
</asp:WebPartManager>
<uc1:DisplayModeMenuVB ID="menu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:ZipCodeWebPart ID="zip1" runat="server"
Title="Zip Code Provider" />
<aspSample:WeatherWebPart ID="weather1" runat="server"
Title="Zip Code Consumer" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:ConnectionsZone ID="ConnectionsZone1" runat="server">
</asp:ConnectionsZone>
<asp:Button ID="Button1" runat="server"
Text="Connect WebPart Controls"
OnClick="Button1_Click"
Visible="false" />
</div>
</form>
</body>
</html>
在瀏覽器中載入頁面之後,按兩下 [ 連線 WebPart 控件 ] 按鈕以形成連線。 接著,您可以在文字框中輸入一些數據,然後按兩下 [輸入 5 位數的郵遞區號 ] 按鈕來示範控制項已連線,而第一個控制項中輸入的數據會在第二個控件中更新。
備註
此多載用來連接控制項時,其連接點與連接點完全相容,而不需要使用 物件即可連接 WebPartTransformer 。 呼叫此方法的這個多載時,只會將呼叫傳遞至方法的其他多載版本,並針對需要 WebPartTransformer 物件的參數傳遞 null
。
當您嘗試以程式設計方式連接兩個控件時,可以使用 CanConnectWebParts 條件式檢查中的 方法來判斷控件是否可以直接連接。
另請參閱
- GetConsumerConnectionPoints(WebPart)
- GetProviderConnectionPoints(WebPart)
- Connections
- ASP.NET 網頁元件控制件
適用於
ConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer)
使用控制項的參考、其指定的 WebPart 物件和 GenericWebPart 物件,建立兩個 ConnectionPoint (或 WebPartTransformer) 控制項之間的連接。
public:
virtual System::Web::UI::WebControls::WebParts::WebPartConnection ^ ConnectWebParts(System::Web::UI::WebControls::WebParts::WebPart ^ provider, System::Web::UI::WebControls::WebParts::ProviderConnectionPoint ^ providerConnectionPoint, System::Web::UI::WebControls::WebParts::WebPart ^ consumer, System::Web::UI::WebControls::WebParts::ConsumerConnectionPoint ^ consumerConnectionPoint, System::Web::UI::WebControls::WebParts::WebPartTransformer ^ transformer);
public virtual System.Web.UI.WebControls.WebParts.WebPartConnection ConnectWebParts (System.Web.UI.WebControls.WebParts.WebPart provider, System.Web.UI.WebControls.WebParts.ProviderConnectionPoint providerConnectionPoint, System.Web.UI.WebControls.WebParts.WebPart consumer, System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint consumerConnectionPoint, System.Web.UI.WebControls.WebParts.WebPartTransformer transformer);
abstract member ConnectWebParts : System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ProviderConnectionPoint * System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint * System.Web.UI.WebControls.WebParts.WebPartTransformer -> System.Web.UI.WebControls.WebParts.WebPartConnection
override this.ConnectWebParts : System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ProviderConnectionPoint * System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint * System.Web.UI.WebControls.WebParts.WebPartTransformer -> System.Web.UI.WebControls.WebParts.WebPartConnection
Public Overridable Function ConnectWebParts (provider As WebPart, providerConnectionPoint As ProviderConnectionPoint, consumer As WebPart, consumerConnectionPoint As ConsumerConnectionPoint, transformer As WebPartTransformer) As WebPartConnection
參數
- providerConnectionPoint
- ProviderConnectionPoint
provider
中的公用方法,這個方法標記著 ConnectionProvider
中繼資料屬性,並做為連接的回呼方法。
- consumerConnectionPoint
- ConsumerConnectionPoint
consumer
中的公用方法,這個方法標記著 ConnectionConsumer
中繼資料屬性,並與 providerConnectionPoint
連接以接收連接資料。
- transformer
- WebPartTransformer
WebPartTransformer,藉著將來自 provider
的資料轉換成 consumer
可以處理的格式,允許兩個控制項之間的連接。
傳回
WebPartConnection,包含連接所需之提供者、消費者和轉換程式的相關資訊。
例外狀況
連接已在 PreRender 中啟動。
備註
當控件的連接點不相容時,會使用此多載來連接控件。 當實作不同於其連接點的介面provider
時consumer
,就會發生不相容的情況。 轉換程式會將數據轉換成 可由 瞭解 consumer
的類型。
另請參閱
- GetConsumerConnectionPoints(WebPart)
- GetProviderConnectionPoints(WebPart)
- Connections
- WebPartTransformer
- ASP.NET 網頁元件控制件