WebPartManager.GetConsumerConnectionPoints(WebPart) 方法

定義

從做為 Web 組件連接之消費者的伺服器控制項中,擷取可做為連接點之所有 ConsumerConnectionPoint 物件的集合。

public:
 virtual System::Web::UI::WebControls::WebParts::ConsumerConnectionPointCollection ^ GetConsumerConnectionPoints(System::Web::UI::WebControls::WebParts::WebPart ^ webPart);
public virtual System.Web.UI.WebControls.WebParts.ConsumerConnectionPointCollection GetConsumerConnectionPoints (System.Web.UI.WebControls.WebParts.WebPart webPart);
abstract member GetConsumerConnectionPoints : System.Web.UI.WebControls.WebParts.WebPart -> System.Web.UI.WebControls.WebParts.ConsumerConnectionPointCollection
override this.GetConsumerConnectionPoints : System.Web.UI.WebControls.WebParts.WebPart -> System.Web.UI.WebControls.WebParts.ConsumerConnectionPointCollection
Public Overridable Function GetConsumerConnectionPoints (webPart As WebPart) As ConsumerConnectionPointCollection

參數

webPart
WebPart

做為連接之消費者的伺服器控制項。

傳回

ConsumerConnectionPointCollection

ConsumerConnectionPointCollection,包含消費者中的所有連接點。

例外狀況

webPartnull

範例

下列程式碼範例會示範如何使用 GetConsumerConnectionPoints 方法。

程式碼範例有四個部分:

  • 使用者控制項,可讓您變更Web 組件頁面上的顯示模式。

  • 網頁,其中包含兩個可連接的自訂 WebPart 控制項,以及一個 <asp:webpartmanager> 元素。

  • 包含兩個自訂控制項和自訂 WebPart 介面的原始程式碼檔案。

  • 說明範例如何在瀏覽器中運作。

程式碼範例的第一個部分是用來變更顯示模式的使用者控制項。 您可以從類別概觀的 WebPartManager 範例區段取得使用者控制項的原始程式碼。 如需顯示模式和使用者控制項運作方式的詳細資訊,請參閱逐步解說:變更Web 組件頁面上的顯示模式主題。

網頁的宣告式標記包含 Register 使用者控制項和自訂控制項的指示詞。 有專案 <asp:webpartmanager><asp:webpartzone> 要包含自訂控制項的專案,以及專案 <asp:connectionszone> 。 請注意,在 方法中 Page_Load ,程式碼會檢查連線是否已存在,如果不存在,則定義提供者、取用者及其各自的連接點,然後將新的連接新增至 屬性所 StaticConnections 參考的靜態連接集。 請注意, ConsumerConnectionPointCollection 使用 GetConsumerConnectionPoints 方法擷取的物件接著會傳遞至 CanConnectWebParts 方法,以判斷是否可以建立兩個控制項之間的連接。

<%@ 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 Page_Load(object sender, EventArgs e)
  {
    
    // Define provider, consumer, and connection points.
    WebPart provider = mgr.WebParts["zip1"];
    ProviderConnectionPoint provConnPoint =
      mgr.GetProviderConnectionPoints(provider)["ZipCodeProvider"];
    WebPart consumer = mgr.WebParts["weather1"];
    ConsumerConnectionPoint consConnPoint =
      mgr.GetConsumerConnectionPoints(consumer)["ZipCodeConsumer"];
    
    // Check whether the connection already exists.
    if (mgr.CanConnectWebParts(provider, provConnPoint,
      consumer, consConnPoint))
    {
      // Create a new static connection.
      WebPartConnection conn = new WebPartConnection();
      conn.ID = "staticConn1";
      conn.ConsumerID = "weather1";
      conn.ConsumerConnectionPointID = "ZipCodeConsumer";
      conn.ProviderID = "zip1";
      conn.ProviderConnectionPointID = "ZipCodeProvider";
      mgr.StaticConnections.Add(conn);
    }
 }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <!-- Reference the WebPartManager control. -->
      <asp:WebPartManager ID="mgr" runat="server" />   
    <div>
      <uc1:DisplayModeMenuCS ID="displaymode1" 
        runat="server" />
      <!-- Reference consumer and provider controls 
           in a zone. -->
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <aspSample:ZipCodeWebPart ID="zip1" 
            runat="server" 
            Title="Zip Code Control"/>
          <aspSample:WeatherWebPart ID="weather1" 
            runat="server" 
            Title="Weather Control" />
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <!-- Add a ConnectionsZone so users can connect 
           controls. -->
      <asp:ConnectionsZone ID="ConnectionsZone1" 
        runat="server" />
    </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 Page_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs)
    
    ' Define provider, consumer, and connection points.
    Dim provider As WebPart = mgr.WebParts("zip1")
    Dim provConnPoint As ProviderConnectionPoint = _
      mgr.GetProviderConnectionPoints(provider)("ZipCodeProvider")
    Dim consumer As WebPart = mgr.WebParts("weather1")
    Dim consConnPoint As ConsumerConnectionPoint = _
      mgr.GetConsumerConnectionPoints(consumer)("ZipCodeConsumer")
    
    ' Check whether the connection already exists.
    If mgr.CanConnectWebParts(provider, provConnPoint, _
      consumer, consConnPoint) Then
      ' Create a new static connection.
      Dim conn As New WebPartConnection()
      conn.ID = "staticConn1"
      conn.ConsumerID = "weather1"
      conn.ConsumerConnectionPointID = "ZipCodeConsumer"
      conn.ProviderID = "zip1"
      conn.ProviderConnectionPointID = "ZipCodeProvider"
      mgr.StaticConnections.Add(conn)
    End If
    
  End Sub
  
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <!-- Reference the WebPartManager control. -->
      <asp:WebPartManager ID="mgr" runat="server" />   
    <div>
      <uc1:DisplayModeMenuVB ID="displaymode1" 
        runat="server" />
      <!-- Reference consumer and provider controls 
           in a zone. -->
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <aspSample:ZipCodeWebPart ID="zip1" 
            runat="server" 
            Title="Zip Code Control"/>
          <aspSample:WeatherWebPart ID="weather1" 
            runat="server" 
            Title="Weather Control" />
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <!-- Add a ConnectionsZone so users can connect 
           controls. -->
      <asp:ConnectionsZone ID="ConnectionsZone1" 
        runat="server" />
    </div>
    </form>
</body>
</html>

範例的第三個部分是控制項的原始程式碼。 您可以從類別概觀的 WebPartManager 範例區段取得此程式碼和編譯它的指示。

在瀏覽器中載入網頁之後,按一下 [顯示模式] 下拉式清單控制項,然後選取 [連線 切換頁面以連線模式。 連線模式會 <asp:connectionszone> 使用 元素,讓您建立控制項之間的連線。 在連線模式中,按一下 [郵遞區號] 控制項標題列中的向下箭號以啟動其動詞功能表,然後按一下 [連線]。 出現連接使用者介面 (UI) 之後,請注意方法中包含的 Page_Load 程式碼已經建立連線。 如果您在稍後的瀏覽器會話中返回此頁面,就會建立此靜態連線,而且每次載入頁面時都不需要重新建立。

備註

Web 組件連線一律牽涉到兩個控制項,一個是做為資料的提供者,另一個是做為資料的取用者。 每個控制項都必須有一或多個定義為連接點的方法。 如果是取用者控制項,其連接點就是 ConsumerConnectionPoint 物件。 擷取取用者連接點是形成Web 組件連接的必要步驟。

取用者必須至少擁有一個連接點,才能建立連線。 方法 GetConsumerConnectionPoints 會檢查取用者控制項,並擷取其所有連接點的集合。 WebPart如果控制項沒有連接點,此方法會傳回空的集合。

適用於

另請參閱