WebPartManager.ConnectWebParts 方法

定義

建立 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

參數

provider
WebPart

WebPart 控制項,其角色為提供資料給另一個連接的控制項。

providerConnectionPoint
ProviderConnectionPoint

方法,做為連接的回呼方法。 當 Web 組件控制集實作時,這是 provider 中標記著 ConnectionProvider 中繼資料屬性的公用方法。

consumer
WebPart

WebPart 控制項,其角色為從 provider 接收資料,然後處理或顯示此資料。

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 條件式檢查中的 方法來判斷控制項是否可以直接連接。

另請參閱

適用於

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

參數

provider
WebPart

WebPart,其角色為提供資料給另一個連接的控制項。

providerConnectionPoint
ProviderConnectionPoint

provider 中的公用方法,這個方法標記著 ConnectionProvider 中繼資料屬性,並做為連接的回呼方法。

consumer
WebPart

WebPart,其角色為從 providertransformer 接收資料,然後處理或顯示此資料。

consumerConnectionPoint
ConsumerConnectionPoint

consumer 中的公用方法,這個方法標記著 ConnectionConsumer 中繼資料屬性,並與 providerConnectionPoint 連接以接收連接資料。

transformer
WebPartTransformer

WebPartTransformer,藉著將來自 provider 的資料轉換成 consumer 可以處理的格式,允許兩個控制項之間的連接。

傳回

WebPartConnection,包含連接所需之提供者、消費者和轉換程式的相關資訊。

例外狀況

連接已在 PreRender 中啟動。

備註

當控制項的連接點不相容時,會使用此多載來連接控制項。 當實作不同于其連接點的介面 providerconsumer ,就會發生不相容的情況。 轉換程式會將資料轉換成 可由 瞭解 consumer 的類型。

另請參閱

適用於