次の方法で共有


WebPartManager.ConnectWebParts メソッド

定義

WebPart ゾーン内に存在する 2 つの WebPartZoneBase コントロール (または、接続を構成できるその他のサーバー コントロール) の間に接続を作成します。

オーバーロード

ConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint)

コントロールへの参照とその指定された WebPart オブジェクトだけを使用して、2 つの GenericWebPart コントロールまたは ConnectionPoint コントロールの間に接続を作成します。

ConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer)

コントロールへの参照、指定された WebPart オブジェクト、および GenericWebPart オブジェクトを使用して、2 つの ConnectionPoint コントロールまたは WebPartTransformer コントロール間の接続を作成します。

注釈

メソッドは ConnectWebParts 、接続可能な任意の 2 つの WebPart コントロール間の接続を形成します。 このメソッドを呼び出して接続を作成する前に、条件付きチェックで メソッドを CanConnectWebParts 呼び出して、コントロールが接続を形成するための要件を満たしていることを確認することもできます。

注意

また、コントロールではない WebPart 2 つのサーバー コントロール間に接続を作成することもできます。 一般に、2 つのコントロールは、必要なメンバーを追加できるように、カスタム サーバー コントロール (または既存の ASP.NET サーバー コントロールを WebControl 継承するコントロールなど) である必要があります。 コントロールは、次に示す要件を満たす必要もあります。

2 つのコントロール間の任意の種類の接続シナリオは、接続できるようにするために次の要件を満たす必要があります。

  • 各コントロールはゾーンに WebPartZoneBase 存在します (同じゾーンである必要はありません)。

  • Web パーツ コントロール セットに実装されているように、接続内のプロバイダー コントロールは、プロバイダーへのコールバックとして機能するパブリック メソッドとしてインターフェイスを実装し、プロバイダー接続ポイントとして識別するためのメタデータ属性をメソッドに持ちます ConnectionProvider 。 プロバイダー接続ポイントを GetProviderConnectionPoints 取得するメソッドは仮想であるため、派生 WebPartManager コントロールは必ずしも同じメタデータ属性を使用する必要はありません。

  • Web パーツ コントロール セットに実装されているように、接続内のコンシューマー コントロールには、プロバイダーのコールバック メソッドで公開されているインターフェイスへの参照を取得できる特別なメソッドもあります。コンシューマーには ConnectionConsumer 、コンシューマー接続ポイントとして識別するメタデータ属性がメソッドに含まれています。 コンシューマー接続ポイントを GetConsumerConnectionPoints 取得するメソッドは仮想であるため、派生 WebPartManager コントロールは必ずしも同じメタデータ属性を使用する必要はありません。

  • コールバック メソッドは、コンシューマーがプロバイダーのコールバック メソッドで提供されるインターフェイスの種類を使用できる (つまり、コンシューマーとプロバイダーが直接データを共有できる) か、開発者が オブジェクトを使用 WebPartTransformer してプロバイダーのデータをコンシューマーが使用できる形式に変換する必要があります。

    重要

    トランスフォーマーが必要ない場合は、 メソッドのオーバーロードを使用します ConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) 。 トランスフォーマーが必要な場合は、 メソッドのオーバーロードを使用します ConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer)

ConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint)

コントロールへの参照とその指定された WebPart オブジェクトだけを使用して、2 つの 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

provider からデータを受け取り、それを処理するか表示する役割を持つ WebPart コントロール。

consumerConnectionPoint
ConsumerConnectionPoint

providerConnectionPoint に接続し、接続のデータを受け取るメソッド。 Web パーツ コントロール セットに実装するときに、consumer のパブリック メソッドを ConnectionConsumer メタデータ属性でマークします。

戻り値

接続に必要なプロバイダーとコンシューマーに関するさまざまな情報が格納された WebPartConnection

例外

動的接続の WebPartManager コントロールのコレクションが読み取り専用です。

次のコード例では、このメソッドを使用してプログラムで接続を作成する方法を示します。 この例を実行するために必要な完全なコードについては、クラスの概要の「例」セクションを WebPartManager 参照してください。 この例では、ページの表示モードを変更できるユーザー コントロールのソース コードと、2 つのカスタム WebPart コントロールのソース コードが必要になります。

2 つのコントロールをホストする Web ページのコードは次のとおりです。 ページでは、上部にある ディレクティブを使用 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 桁の郵便番号の入力 ] ボタンをクリックして、コントロールが接続されていること、および最初のコントロールに入力されたデータが 2 番目のコントロールで更新されることを示すことができます。

注釈

このオーバーロードは、接続ポイントがオブジェクトを使用せずに接続できる十分な互換性がある場合に、コントロールを WebPartTransformer 接続するために使用されます。 メソッドのこのオーバーロードが呼び出されると、メソッドの他のオーバーロードされたバージョンへの呼び出しが単に渡され、オブジェクトを必要とする WebPartTransformer パラメーターに渡nullされます。

2 つのコントロールをプログラムで接続しようとすると、条件付きチェックで メソッドを CanConnectWebParts 使用して、コントロールを直接接続できるかどうかを判断できます。

こちらもご覧ください

適用対象

ConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer)

コントロールへの参照、指定された WebPart オブジェクト、および GenericWebPart オブジェクトを使用して、2 つの 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

ConnectionProvider メタデータ属性でマークされ、接続のコールバック メソッドとして機能する、provider のパブリック メソッド。

consumer
WebPart

provider または transformer からデータを受け取り、それを処理するか表示する役割を持つ WebPart コントロール。

consumerConnectionPoint
ConsumerConnectionPoint

ConnectionConsumer メタデータ属性でマークされ、consumer と接続して接続のデータを受け取る、providerConnectionPoint のパブリック メソッド。

transformer
WebPartTransformer

provider のデータを consumer が処理できる形式に変換することにより、2 つのコントロールを接続できるようにする WebPartTransformer

戻り値

接続に必要なプロバイダー、コンシューマー、およびトランスフォーマーに関する情報が格納された WebPartConnection

例外

接続が既に PreRender でアクティブになっています。

注釈

このオーバーロードは、接続ポイントに互換性がない場合にコントロールを接続するために使用されます。 非互換性は、接続ポイントとして とは異なるインターフェイスproviderを実装する場合consumerに発生します。 トランスフォーマーは、データを によって理解できる型に consumer変換します。

こちらもご覧ください

適用対象