コネクション ポイント [connection point]
ConnectionPoint クラス
アセンブリ: System.Web (system.web.dll 内)


すべての Web パーツ接続は、データを共有する 2 つのサーバー コントロールで構成されています。そのうち 1 つはコンシューマで、もう 1 つはプロバイダです。Web パーツ接続に不可欠な構成要素と接続オブジェクト自体の詳細については、WebPartConnection クラスの概要を参照してください。すべての Web パーツ接続には、コネクション ポイントが必要です。プロバイダ コントロールとコンシューマ コントロールはそれぞれ、少なくとも 1 つの定義された ConnectionPoint オブジェクトを持っている必要があります (これらのコントロールはいずれも、オプションとして複数のコネクション ポイントを持つこともできます)。このオブジェクトには、コントロールがもう一方のコントロールに接続する方法と、コントロール間で共有できるデータの型についての詳細が格納されます。実際の接続では、プロバイダが ProviderConnectionPoint のインスタンスである独自の型のコネクション ポイント オブジェクト (ConnectionPoint 基本クラスから派生) を持ち、コンシューマも ConsumerConnectionPoint のインスタンスである独自のオブジェクトを持ちます。
プロバイダ コネクション ポイントを作成するには、実装されたインターフェイス インスタンスをコンシューマに返すコールバック メソッドをプロバイダに追加する必要があります。ソース コード内では、このコールバック メソッドを ConnectionProvider コード属性 (ConnectionProviderAttribute クラスのトピックを参照) でマークする必要があります。同様に、コンシューマ接続ポイントを作成するには、インターフェイス インスタンスを受け取るメソッドをコンシューマに追加し、そのメソッドを ConnectionConsumer 属性 (ConnectionConsumerAttribute クラスのトピックを参照) でマークする必要があります。
開発者が Web ページ上で接続を作成するときは、静的接続または動的接続として作成できます。静的接続は、Web ページのマークアップで宣言されます。静的接続が宣言されると、開発者は、<asp:webpartconnection> 要素タグ内の ProviderConnectionPointID 属性と ConsumerConnectionPointID 属性に値を割り当てることにより、コンシューマとプロバイダの両方に使用するコネクション ポイントを指定できます。このアプローチは、静的接続が接続に使用するコネクション ポイントを識別できるため、コンシューマ コントロールとプロバイダ コントロールに複数のコネクション ポイントが定義されている場合に特に便利です。
動的接続はプログラムによって作成されます。開発者がコードによって作成するか、または、ユーザーが ConnectionsZone コントロールによって提供されるユーザー インターフェイス (UI) を通じて作成できます。開発者がコードで接続を作成するには、WebPartManager コントロールで ConnectWebParts メソッドを呼び出し、WebPartConnection オブジェクトのインスタンスを取得する必要があります。このメソッドを呼び出すには、コンシューマ サーバー コントロールおよびプロバイダ サーバー コントロールへの参照と、それぞれのコネクション ポイント オブジェクトが必要です。プロバイダ コントロールとコンシューマ コントロールのコネクション ポイントへの参照を取得するには、最初に、WebPartManager コントロールで GetProviderConnectionPoints メソッドと GetConsumerConnectionPoints メソッドを呼び出す必要があります。これらのメソッドは該当するコネクション ポイント オブジェクトを返します。このコネクション ポイント オブジェクトを、接続を作成するためのメソッドに渡します。
プロバイダのコネクション ポイント オブジェクトとコンシューマのコネクション ポイント オブジェクトの両方が同じインターフェイス型に対応している場合は、プロバイダとコンシューマの間に互換性があり、両者は直接接続を構成してデータを共有できます。同じインターフェイス型に対応していない場合は、WebPartTransformer オブジェクトを使用して、プロバイダのインターフェイス インスタンスをコンシューマが対応している型のインターフェイス インスタンスに変換する必要があります。
ConnectionPoint 抽象クラスは、コンシューマ コントロールとプロバイダ コントロールの間で共有されるコネクション ポイントの基本的な詳細を提供します。これらの詳細を格納するプロパティは、いくつかあります。AllowsMultipleConnections プロパティは、コネクション ポイントが一度に複数の接続に参加できるかどうかを示します。既定では、プロバイダ コネクション ポイントは複数の接続に参加できますが、コンシューマ接続ポイントは複数の接続に参加できません。ControlType プロパティは、コネクション ポイントに関連付けられているサーバー コントロールの種類を示します。WebPart コントロールだけが接続を構成できるのではなく、WebPartZoneBase ゾーンに配置されている任意のサーバー コントロール (ASP.NET コントロール、カスタム コントロール、またはユーザー コントロール) が接続に参加できます。DisplayName プロパティは、接続を作成するユーザーを支援する UI に表示できる、コネクション ポイントの表示名を提供します。ID プロパティは、コネクション ポイント オブジェクト自体の文字列識別子として機能します。InterfaceType プロパティは、コネクション ポイントが理解できるインターフェイス型を示します。指定したコネクション ポイントがそのインターフェイスのインスタンスを提供するか使用するかは、それが ProviderConnectionPoint オブジェクトであるか ConsumerConnectionPoint オブジェクトであるかによって決まります。
ConnectionPoint クラスにはメソッドが 1 つあります。GetEnabled メソッドは、コネクション ポイントが現在接続に参加できるかどうかを示すブール値を返します。
ConnectionPoint クラスには、DefaultID というパブリック フィールドも 1 つあります。このフィールドは、接続の既定のコネクション ポイントを識別するために使用される値を格納します。
![]() |
---|
コネクション ポイントのメソッドを指定する属の必須パラメータは、displayName だけです。したがって、ID を指定せずに既定のコネクション ポイント属性を作成できます。そのような場合は、DefaultID フィールドが、使用する基本値を提供します。 |

必須の ConnectionPoint オブジェクトを含む Web パーツ接続を作成するコード例を次に示します。ConnectionPoint クラスは抽象基本クラスでなので、その子クラスのインスタンス (ProviderConnectionPoint および ConsumerConnectionPoint) は、接続を構成するために使用される実際のオブジェクトとなります。
コード例の最初の部分は、Web ページ上の表示モードをユーザーが変更できるようにするユーザー コントロールです。次のソース コードを .ascx ファイルに保存します。このファイルの名前は、ホストする Web ページの先頭近くにある、このユーザー コントロール用の Register ディレクティブの Src 属性に割り当てられます。表示モードの詳細、およびこのコントロールのソース コードの説明については、「チュートリアル : Web パーツ ページでの表示モードの変更」を参照してください。
<%@ control language="vb" classname="DisplayModeMenuVB"%> <script runat="server"> ' Use a field to reference the current WebPartManager. Dim _manager As WebPartManager Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs) AddHandler Page.InitComplete, AddressOf InitComplete End Sub Sub InitComplete(ByVal sender As Object, ByVal e As System.EventArgs) _manager = WebPartManager.GetCurrentWebPartManager(Page) Dim browseModeName As String = WebPartManager.BrowseDisplayMode.Name ' Fill the dropdown with the names of supported display modes. Dim mode As WebPartDisplayMode For Each mode In _manager.SupportedDisplayModes Dim modeName As String = mode.Name ' Make sure a mode is enabled before adding it. If mode.IsEnabled(_manager) Then Dim item As New ListItem(modeName, modeName) DisplayModeDropdown.Items.Add(item) End If Next mode ' If shared scope is allowed for this user, display the scope-switching ' UI and select the appropriate radio button for the current user scope. If _manager.Personalization.CanEnterSharedScope Then Panel2.Visible = True If _manager.Personalization.Scope = PersonalizationScope.User Then RadioButton1.Checked = True Else RadioButton2.Checked = True End If End If End Sub ' Change the page to the selected display mode. Sub DisplayModeDropdown_SelectedIndexChanged(ByVal sender As Object, _ ByVal e As EventArgs) Dim selectedMode As String = DisplayModeDropdown.SelectedValue Dim mode As WebPartDisplayMode = _ _manager.SupportedDisplayModes(selectedMode) If Not (mode Is Nothing) Then _manager.DisplayMode = mode End If End Sub ' Set the selected item equal to the current display mode. Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs) Dim items As ListItemCollection = DisplayModeDropdown.Items Dim selectedIndex As Integer = _ items.IndexOf(items.FindByText(_manager.DisplayMode.Name)) DisplayModeDropdown.SelectedIndex = selectedIndex End Sub ' Reset all of a user's personalization data for the page. Protected Sub LinkButton1_Click(ByVal sender As Object, _ ByVal e As EventArgs) _manager.Personalization.ResetPersonalizationState() End Sub ' If not in User personalization scope, toggle into it. Protected Sub RadioButton1_CheckedChanged(ByVal sender As Object, _ ByVal e As EventArgs) If _manager.Personalization.Scope = PersonalizationScope.Shared Then _manager.Personalization.ToggleScope() End If End Sub ' If not in Shared scope, and if user is allowed, toggle the scope. Protected Sub RadioButton2_CheckedChanged(ByVal sender As Object, _ ByVal e As EventArgs) If _manager.Personalization.CanEnterSharedScope AndAlso _ _manager.Personalization.Scope = PersonalizationScope.User Then _manager.Personalization.ToggleScope() End If End Sub </script> <div> <asp:Panel ID="Panel1" runat="server" Borderwidth="1" Width="230" BackColor="lightgray" Font-Names="Verdana, Arial, Sans Serif" > <asp:Label ID="Label1" runat="server" Text=" Display Mode" Font-Bold="true" Font-Size="8" Width="120" /> <asp:DropDownList ID="DisplayModeDropdown" runat="server" AutoPostBack="true" Width="120" OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" /> <asp:LinkButton ID="LinkButton1" runat="server" Text="Reset User State" ToolTip="Reset the current user's personalization data for the page." Font-Size="8" OnClick="LinkButton1_Click" /> <asp:Panel ID="Panel2" runat="server" GroupingText="Personalization Scope" Font-Bold="true" Font-Size="8" Visible="false" > <asp:RadioButton ID="RadioButton1" runat="server" Text="User" AutoPostBack="true" GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" /> <asp:RadioButton ID="RadioButton2" runat="server" Text="Shared" AutoPostBack="true" GroupName="Scope" OnCheckedChanged="RadioButton2_CheckedChanged" /> </asp:Panel> </asp:Panel> </div>
<%@ control language="C#" classname="DisplayModeMenuCS"%> <script runat="server"> // Use a field to reference the current WebPartManager. WebPartManager _manager; void Page_Init(object sender, EventArgs e) { Page.InitComplete += new EventHandler(InitComplete); } void InitComplete(object sender, System.EventArgs e) { _manager = WebPartManager.GetCurrentWebPartManager(Page); String browseModeName = WebPartManager.BrowseDisplayMode.Name; // Fill the dropdown with the names of supported display modes. foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes) { String modeName = mode.Name; // Make sure a mode is enabled before adding it. if (mode.IsEnabled(_manager)) { ListItem item = new ListItem(modeName, modeName); DisplayModeDropdown.Items.Add(item); } } // If shared scope is allowed for this user, display the scope-switching // UI and select the appropriate radio button for the current user scope. if (_manager.Personalization.CanEnterSharedScope) { Panel2.Visible = true; if (_manager.Personalization.Scope == PersonalizationScope.User) RadioButton1.Checked = true; else RadioButton2.Checked = true; } } // Change the page to the selected display mode. void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e) { String selectedMode = DisplayModeDropdown.SelectedValue; WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode]; if (mode != null) _manager.DisplayMode = mode; } // Set the selected item equal to the current display mode. void Page_PreRender(object sender, EventArgs e) { ListItemCollection items = DisplayModeDropdown.Items; int selectedIndex = items.IndexOf(items.FindByText(_manager.DisplayMode.Name)); DisplayModeDropdown.SelectedIndex = selectedIndex; } // Reset all of a user's personalization data for the page. protected void LinkButton1_Click(object sender, EventArgs e) { _manager.Personalization.ResetPersonalizationState(); } // If not in User personalization scope, toggle into it. protected void RadioButton1_CheckedChanged(object sender, EventArgs e) { if (_manager.Personalization.Scope == PersonalizationScope.Shared) _manager.Personalization.ToggleScope(); } // If not in Shared scope, and if user is allowed, toggle the scope. protected void RadioButton2_CheckedChanged(object sender, EventArgs e) { if (_manager.Personalization.CanEnterSharedScope && _manager.Personalization.Scope == PersonalizationScope.User) _manager.Personalization.ToggleScope(); } </script> <div> <asp:Panel ID="Panel1" runat="server" Borderwidth="1" Width="230" BackColor="lightgray" Font-Names="Verdana, Arial, Sans Serif" > <asp:Label ID="Label1" runat="server" Text=" Display Mode" Font-Bold="true" Font-Size="8" Width="120" /> <asp:DropDownList ID="DisplayModeDropdown" runat="server" AutoPostBack="true" Width="120" OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" /> <asp:LinkButton ID="LinkButton1" runat="server" Text="Reset User State" ToolTip="Reset the current user's personalization data for the page." Font-Size="8" OnClick="LinkButton1_Click" /> <asp:Panel ID="Panel2" runat="server" GroupingText="Personalization Scope" Font-Bold="true" Font-Size="8" Visible="false" > <asp:RadioButton ID="RadioButton1" runat="server" Text="User" AutoPostBack="true" GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" /> <asp:RadioButton ID="RadioButton2" runat="server" Text="Shared" AutoPostBack="true" GroupName="Scope" OnCheckedChanged="RadioButton2_CheckedChanged" /> </asp:Panel> </asp:Panel> </div>
コード例の 2 番目の部分は、インターフェイスとコントロールのソース コードです。ソース ファイルには、IZipCode という名前の単純なインターフェイスが含まれています。また、インターフェイスを実装してプロバイダ コントロールとして動作する、ZipCodeWebPart という名前の WebPart クラスも存在します。その ProvideIZipCode メソッドは、インターフェイスの唯一のメンバが実装されたコールバック メソッドです。このメソッドは、単にインターフェイスのインスタンスを返すだけです。このメソッドはメタデータに ConnectionProvider 属性でマークされます。これは、メソッドをプロバイダのコネクション ポイントのコールバック メソッドとして識別するしくみです。もう 1 つの WebPart クラスは WeatherWebPart という名前で、接続のコンシューマとして動作します。このクラスは、プロバイダ コントロールから IZipCode インターフェイスのインスタンスを取得する、GetZipCode という名前のメソッドを持っています。このメソッドは、コンシューマのコネクション ポイント メソッドとして、メタデータに ConnectionConsumer 属性でマークされます。これは、コンシューマ コントロールのコネクション ポイント メソッドを識別するためのしくみです。
コード例を実行するためには、このソース コードをコンパイルする必要があります。それを明示的にコンパイルし、コンパイル済みのアセンブリを Web サイトの Bin フォルダまたはグローバル アセンブリ キャッシュに配置できます。サイトの App_Code フォルダにソース コードを配置し、実行時に動的にコンパイルすることもできます。このコード例は、動的コンパイルを使用します。コンパイル方法を示すチュートリアルについては、「チュートリアル : カスタム サーバー コントロールの開発と使用」を参照してください。
Imports System Imports System.Web Imports System.Web.Security Imports System.Security.Permissions Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Web.UI.WebControls.WebParts Namespace Samples.AspNet.VB.Controls <AspNetHostingPermission(SecurityAction.Demand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ <AspNetHostingPermission(SecurityAction.InheritanceDemand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ Public Interface IZipCode Property ZipCode() As String End Interface <AspNetHostingPermission(SecurityAction.Demand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ <AspNetHostingPermission(SecurityAction.InheritanceDemand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ Public Class ZipCodeWebPart Inherits WebPart Implements IZipCode Private zipCodeText As String = String.Empty Private input As TextBox Private send As Button Public Sub New() End Sub ' Make the implemented property personalizable to save ' the Zip Code between browser sessions. <Personalizable()> _ Public Property ZipCode() As String _ Implements IZipCode.ZipCode Get Return zipCodeText End Get Set(ByVal value As String) zipCodeText = value End Set End Property ' This is the callback method that returns the provider. <ConnectionProvider("Zip Code Provider", "ZipCodeProvider")> _ Public Function ProvideIZipCode() As IZipCode Return Me End Function Protected Overrides Sub CreateChildControls() Controls.Clear() input = New TextBox() Me.Controls.Add(input) send = New Button() send.Text = "Enter 5-digit Zip Code" AddHandler send.Click, AddressOf Me.submit_Click Me.Controls.Add(send) End Sub Private Sub submit_Click(ByVal sender As Object, _ ByVal e As EventArgs) If input.Text <> String.Empty Then zipCodeText = Page.Server.HtmlEncode(input.Text) input.Text = String.Empty End If End Sub End Class <AspNetHostingPermission(SecurityAction.Demand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ <AspNetHostingPermission(SecurityAction.InheritanceDemand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ Public Class WeatherWebPart Inherits WebPart Private _provider As IZipCode Private _zipSearch As String Private DisplayContent As Label ' This method is identified by the ConnectionConsumer ' attribute, and is the mechanism for connecting with ' the provider. <ConnectionConsumer("Zip Code Consumer", "ZipCodeConsumer")> _ Public Sub GetIZipCode(ByVal Provider As IZipCode) _provider = Provider End Sub Protected Overrides Sub OnPreRender(ByVal e As EventArgs) EnsureChildControls() If Not (Me._provider Is Nothing) Then _zipSearch = _provider.ZipCode.Trim() DisplayContent.Text = "My Zip Code is: " + _zipSearch End If End Sub 'OnPreRender Protected Overrides Sub CreateChildControls() Controls.Clear() DisplayContent = New Label() Me.Controls.Add(DisplayContent) End Sub End Class End Namespace
namespace Samples.AspNet.CS.Controls { using System; using System.Web; using System.Web.Security; using System.Security.Permissions; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public interface IZipCode { string ZipCode { get; set;} } [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class ZipCodeWebPart : WebPart, IZipCode { string zipCodeText = String.Empty; TextBox input; Button send; public ZipCodeWebPart() { } // Make the implemented property personalizable to save // the Zip Code between browser sessions. [Personalizable()] public virtual string ZipCode { get { return zipCodeText; } set { zipCodeText = value; } } // This is the callback method that returns the provider. [ConnectionProvider("Zip Code Provider", "ZipCodeProvider")] public IZipCode ProvideIZipCode() { return this; } protected override void CreateChildControls() { Controls.Clear(); input = new TextBox(); this.Controls.Add(input); send = new Button(); send.Text = "Enter 5-digit Zip Code"; send.Click += new EventHandler(this.submit_Click); this.Controls.Add(send); } private void submit_Click(object sender, EventArgs e) { if (input.Text != String.Empty) { zipCodeText = Page.Server.HtmlEncode(input.Text); input.Text = String.Empty; } } } [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class WeatherWebPart : WebPart { private IZipCode _provider; string _zipSearch; Label DisplayContent; // This method is identified by the ConnectionConsumer // attribute, and is the mechanism for connecting with // the provider. [ConnectionConsumer("Zip Code Consumer", "ZipCodeConsumer")] public void GetIZipCode(IZipCode Provider) { _provider = Provider; } protected override void OnPreRender(EventArgs e) { EnsureChildControls(); if (this._provider != null) { _zipSearch = _provider.ZipCode.Trim(); DisplayContent.Text = "My Zip Code is: " + _zipSearch; } } protected override void CreateChildControls() { Controls.Clear(); DisplayContent = new Label(); this.Controls.Add(DisplayContent); } } }
コード例の 3 番目の部分は Web ページです。先頭近くには、接続を構成するカスタム コントロールを登録する Register ディレクティブ、およびユーザーがページの表示モードを変更できるユーザー コントロールがあります。接続は、ページの <staticconnections> 要素内での宣言によって作成されます。また、プログラムによって接続を作成することもできます。そのためのコードは、Button1_Click メソッドにあります。接続を宣言で作成するか、プログラムで作成するかにかかわらず、コネクション ポイントはプロバイダとコンシューマの両方に対して指定する必要があります。Button2_Click メソッドはプロバイダとコンシューマ両方の ConnectionPoint オブジェクトにアクセスし、そのプロパティ値の一部をページのラベルに書き込みます。
<%@ Page Language="VB" %> <%@ register tagprefix="uc1" tagname="DisplayModeMenuVB" src="~/displaymodemenuvb.ascx" %> <%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB.Controls" %> <!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") If mgr.CanConnectWebParts(zip1, provPoint, weather1, connPoint) Then mgr.ConnectWebParts(zip1, provPoint, weather1, connPoint) End If End Sub Protected Sub Button2_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Dim conn As WebPartConnection = mgr.Connections(0) lblConn.Text = "<h2>Connection Point Details</h2>" & _ "<h3>Provider Connection Point</h3>" & _ " Display name: " & conn.ProviderConnectionPoint.DisplayName & _ "<br />" & _ " ID: " & conn.ProviderConnectionPoint.ID & _ "<br />" & _ " Interface type: " & conn.ProviderConnectionPoint.InterfaceType.ToString() & _ "<br />" & _ " Control type: " & conn.ProviderConnectionPoint.ControlType.ToString() & _ "<br />" & _ " Allows multiple connections: " & _ conn.ProviderConnectionPoint.AllowsMultipleConnections.ToString() & _ "<br />" & _ " Enabled: " & conn.ProviderConnectionPoint.GetEnabled(zip1).ToString() & _ "<hr />" & _ "<h3>Consumer Connection Point</h3>" & _ " Display name: " & conn.ConsumerConnectionPoint.DisplayName & _ "<br />" & _ " ID: " & conn.ConsumerConnectionPoint.ID & _ "<br />" & _ " Interface type: " & conn.ConsumerConnectionPoint.InterfaceType.ToString() & _ "<br />" & _ " Control type: " & conn.ConsumerConnectionPoint.ControlType.ToString() & _ "<br />" & _ " Allows multiple connections: " & _ conn.ConsumerConnectionPoint.AllowsMultipleConnections.ToString() & _ "<br />" & _ " Enabled: " & conn.ConsumerConnectionPoint.GetEnabled(zip1).ToString() End Sub Protected Sub Page_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) lblConn.Text = String.Empty End Sub </script> <html > <head id="Head1" runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:WebPartManager ID="mgr" runat="server" > <StaticConnections> <asp:WebPartConnection ID="conn1" ConsumerConnectionPointID="ZipCodeConsumer" ConsumerID="weather1" ProviderConnectionPointID="ZipCodeProvider" ProviderID="zip1" /> </StaticConnections> </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="Dynamic Connection" OnClick="Button1_Click" /> <br /> <asp:Button ID="Button2" runat="server" Text="Connection Point Details" OnClick="Button2_Click" /> <br /> <asp:Label ID="lblConn" runat="server" /> </div> </form> </body> </html>
<%@ Page Language="C#" %> <%@ register tagprefix="uc1" tagname="DisplayModeMenuCS" src="~/displaymodemenucs.ascx" %> <%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS.Controls" %> <!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"]; if(mgr.CanConnectWebParts(zip1, provPoint, weather1, connPoint)) mgr.ConnectWebParts(zip1, provPoint, weather1, connPoint); } protected void Button2_Click(object sender, EventArgs e) { WebPartConnection conn = mgr.Connections[0]; lblConn.Text = "<h2>Connection Point Details</h2>" + "<h3>Provider Connection Point</h3>" + " Display name: " + conn.ProviderConnectionPoint.DisplayName + "<br />" + " ID: " + conn.ProviderConnectionPoint.ID + "<br />" + " Interface type: " + conn.ProviderConnectionPoint.InterfaceType.ToString() + "<br />" + " Control type: " + conn.ProviderConnectionPoint.ControlType.ToString() + "<br />" + " Allows multiple connections: " + conn.ProviderConnectionPoint.AllowsMultipleConnections.ToString() + "<br />" + " Enabled: " + conn.ProviderConnectionPoint.GetEnabled(zip1).ToString() + "<hr />" + "<h3>Consumer Connection Point</h3>" + " Display name: " + conn.ConsumerConnectionPoint.DisplayName + "<br />" + " ID: " + conn.ConsumerConnectionPoint.ID + "<br />" + " Interface type: " + conn.ConsumerConnectionPoint.InterfaceType.ToString() + "<br />" + " Control type: " + conn.ConsumerConnectionPoint.ControlType.ToString() + "<br />" + " Allows multiple connections: " + conn.ConsumerConnectionPoint.AllowsMultipleConnections.ToString() + "<br />" + " Enabled: " + conn.ConsumerConnectionPoint.GetEnabled(zip1).ToString(); } protected void Page_Load(object sender, EventArgs e) { lblConn.Text = String.Empty; } </script> <html > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:WebPartManager ID="mgr" runat="server" > <StaticConnections> <asp:WebPartConnection ID="conn1" ConsumerConnectionPointID="ZipCodeConsumer" ConsumerID="weather1" ProviderConnectionPointID="ZipCodeProvider" ProviderID="zip1" /> </StaticConnections> </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="Dynamic Connection" OnClick="Button1_Click" /> <br /> <asp:Button ID="Button2" runat="server" Text="Connection Point Details" OnClick="Button2_Click" /> <br /> <asp:Label ID="lblConn" runat="server" /> </div> </form> </body> </html>
ブラウザにページを読み込んだ後、[Connection Point Details] ボタンをクリックします。宣言によって接続が確立されたプロバイダ コネクション ポイントとコンシューマ接続ポイントに関する情報が表示されます。次に、[Display Mode] ドロップダウン コントロールを使用して、ページを接続モードに切り替えます。1 つの WebPart コントロールの動詞メニュー (タイトル バー内の下向き矢印で表示) で、Connect 動詞をクリックします。ページ内で宣言された <asp:connectionszone> コントロールによって自動的に作成された、接続 UI が表示されます。[切断] ボタンをクリックして既存の接続を終了します。[Display Mode] コントロールを使用して、ページをブラウズ モードに戻します。続いて、[Dynamic Connection] ボタンをクリックし、プログラムによって接続を作成します。[Connection Point Details] ボタンを再びクリックし、2 つのコネクション ポイント オブジェクトの詳細を表示します。


System.Web.UI.WebControls.WebParts.ConnectionPoint
System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint
System.Web.UI.WebControls.WebParts.ProviderConnectionPoint


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ConnectionPoint フィールド

名前 | 説明 | |
---|---|---|
![]() | DefaultID | サーバー コントロールに関連付けられているコネクション ポイントのコレクション内で、既定のコネクション ポイントを識別するために使用される文字列を表します。 |

ConnectionPoint プロパティ

名前 | 説明 | |
---|---|---|
![]() | AllowsMultipleConnections | コネクション ポイントが同時に複数の接続をサポートするかどうかを示す値を取得します。 |
![]() | ControlType | コネクション ポイントが関連付けられているサーバー コントロールの Type を取得します。 |
![]() | DisplayName | ユーザー インターフェイス (UI) でコネクション ポイントを表す表示名として使用される文字列を取得します。 |
![]() | ID | コネクション ポイントの識別子を含む文字列を取得します。 |
![]() | InterfaceType | コネクション ポイントによって使用されるインターフェイスの型を取得します。 |

ConnectionPoint メソッド

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetEnabled | コネクション ポイントが接続に参加できるかどうかを示す値を取得します。 |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

ConnectionPoint メンバ
Web パーツ接続で、コンシューマ コントロールとプロバイダ コントロールがデータを共有できるようにするコネクション ポイント オブジェクトを定義するための基本クラスとして機能します。
ConnectionPoint データ型で公開されるメンバを以下の表に示します。

名前 | 説明 | |
---|---|---|
![]() | DefaultID | サーバー コントロールに関連付けられているコネクション ポイントのコレクション内で、既定のコネクション ポイントを識別するために使用される文字列を表します。 |

名前 | 説明 | |
---|---|---|
![]() | AllowsMultipleConnections | コネクション ポイントが同時に複数の接続をサポートするかどうかを示す値を取得します。 |
![]() | ControlType | コネクション ポイントが関連付けられているサーバー コントロールの Type を取得します。 |
![]() | DisplayName | ユーザー インターフェイス (UI) でコネクション ポイントを表す表示名として使用される文字列を取得します。 |
![]() | ID | コネクション ポイントの識別子を含む文字列を取得します。 |
![]() | InterfaceType | コネクション ポイントによって使用されるインターフェイスの型を取得します。 |

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetEnabled | コネクション ポイントが接続に参加できるかどうかを示す値を取得します。 |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

- ConnectionPointのページへのリンク