WebPartManager.CanConnectWebParts メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
接続に関係する WebPart コントロールをチェックし、こうしたコントロールを接続できるかどうかを判断します。
オーバーロード
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) |
コンシューマー コントロールとプロバイダー コントロールが互換性のあるインターフェイスを持ち、WebPart オブジェクトが不要な場合に、接続に関係する WebPartTransformer コントロールをチェックし、こうしたコントロールを接続できるかどうかを判断します。 |
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) |
接続に関係する WebPart コントロールをチェックして、こうしたコントロールが接続可能かどうかを判断し、WebPartTransformer オブジェクトを使用して互換性のないコンシューマーとプロバイダーの間に接続を作成します。 |
注釈
この CanConnectWebParts メソッドは、2 つの WebPart コントロールを接続できるかどうかを判断するために使用されます。 このメソッドは、通常、メソッドを呼び出す前の条件付きチェックとして使用されます ConnectWebParts 。
このメソッドは CanConnectWebParts 、2 つのコントロールが接続を形成する前に満たす必要があるいくつかの条件をチェックします。 次の一覧は、接続を確立するための主な条件をまとめたものです。 これらすべての条件 (およびいくつかの追加の内部条件) が満たされている場合、メソッド true
は制御を接続できることを意味します。
プロバイダー コントロールとコンシューマー コントロールは使用できず
null
、プロパティによって参照されるコントロールのコレクションに WebParts 含まれている必要があります。プロバイダーとコンシューマーを同じコントロールにすることはできません。 つまり、コントロールは WebPart それ自体に接続できません。
ConnectionPointプロバイダーとコンシューマーの両方のオブジェクト (接続ポイント) を指定
null
することはできません。プロバイダーとコンシューマーを閉じることはできません (どちらのコントロールの IsClosed プロパティも閉じることはできません
true
)。接続ポイント コントロールのプロパティは ControlType 、コンシューマーとプロバイダーの両方のコントロールの型と一致する必要があります。
接続ポイントは両方とも有効にする必要があります (メソッド GetEnabled は両方とも返す
true
必要があります)。各接続ポイントは、独自 AllowsMultipleConnections のプロパティで指定されている接続よりも多くの接続を形成しようとしないでください。
互換性のないコントロールをWebPartTransformer接続するためにオブジェクト (トランスフォーマー) が必要な場合は、
null
ただし、コントロールに既に互換性がある場合は、トランスフォーマーを使用するnull
必要があります。トランスフォーマー (使用されている場合) は、コレクション内で参照する AvailableTransformers 必要があります。
トランスフォーマー (使用されている場合) には、プロバイダーとコンシューマーと互換性のあるインターフェイスが必要であり、2 つのコントロール間でデータを変換できるようにする必要があります。 コンシューマーとプロバイダーのセカンダリ インターフェイスにも互換性がある必要があります。
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint)
コンシューマー コントロールとプロバイダー コントロールが互換性のあるインターフェイスを持ち、WebPart オブジェクトが不要な場合に、接続に関係する WebPartTransformer コントロールをチェックし、こうしたコントロールを接続できるかどうかを判断します。
public:
bool CanConnectWebParts(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 bool CanConnectWebParts (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.CanConnectWebParts : System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ProviderConnectionPoint * System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint -> bool
Public Function CanConnectWebParts (provider As WebPart, providerConnectionPoint As ProviderConnectionPoint, consumer As WebPart, consumerConnectionPoint As ConsumerConnectionPoint) As Boolean
パラメーター
- provider
- WebPart
コントロールを接続したときに、consumer
にデータを提供するコントロール。
- providerConnectionPoint
- ProviderConnectionPoint
provider
が接続に関与できるようにする ConnectionPoint。
- consumer
- WebPart
コントロールを接続したときに、provider
からデータを受け取るコントロール。
- consumerConnectionPoint
- ConsumerConnectionPoint
consumer
が接続に関与できるように、コールバック メソッドとして機能する ConnectionPoint。
戻り値
provider
と consumer
を接続できるかどうかを示すブール値。
例
次のコード例は、このメソッドの使用方法を示しています。
コード例には、次の 4 つの部分があります。
Web パーツ ページの表示モードを変更できるユーザー コントロール。
接続できる 2 つのカスタム WebPart コントロール、要素、およびメソッドを使用してCanConnectWebParts接続を
<asp:webpartmanager>
作成するイベント処理コードを含む Web ページ。2 つのカスタム コントロールとカスタム WebPart インターフェイスを含むソース コード ファイル。
ブラウザーでの例の動作の説明。
コード例の最初の部分は、表示モードを変更するためのユーザー コントロールです。 ユーザー コントロールのソース コードは、クラスの概要の WebPartManager 「例」セクションから取得できます。 表示モードとユーザー コントロールの動作の詳細については、「チュートリアル: Web パーツ ページでの表示モードの変更」を参照してください。
Web ページの宣言型マークアップには、 Register
ユーザー コントロールとカスタム コントロールの両方のディレクティブが含まれています。 <asp:webpartmanager>
要素、カスタム コントロールを<asp:webpartzone>
格納する要素、および要素があります<asp:connectionszone>
。 このメソッドでは Page_Load
、接続が可能かどうかがコードによってチェックされ、確立されている場合は、プロバイダー、コンシューマー、およびそれぞれの接続ポイントが定義され、プロパティによって参照される静的接続のセットに新しい接続が StaticConnections 追加されます。
<%@ 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>
この例の 3 番目の部分は、コントロールのソース コードです。 インターフェイスと 2 つのカスタム WebPart コントロールが含まれています。1 つはプロバイダーとして機能し、もう 1 つはコンシューマーとして機能します。 これらは互換性のある接続ポイントを持っているため (両方ともインターフェイスを IZipCode
認識します)、接続を行うためにトランスフォーマーは必要ありません。 コード例を実行するには、このソース コードをコンパイルする必要があります。 明示的にコンパイルし、結果のアセンブリを Web サイトの Bin フォルダーまたはグローバル アセンブリ キャッシュに配置できます。 または、ソース コードをサイトの App_Code フォルダーに配置して、実行時に動的にコンパイルすることもできます。 コンパイル方法を示すチュートリアルについては、「 チュートリアル: カスタム Web サーバー コントロールの開発と使用」を参照してください。
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", "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 (!string.IsNullOrEmpty(input.Text))
{
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", "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);
}
}
}
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", "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", "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
Protected Overrides Sub CreateChildControls()
Controls.Clear()
DisplayContent = New Label()
Me.Controls.Add(DisplayContent)
End Sub
End Class
End Namespace
ブラウザーに Web ページを読み込んだ後、[表示モード] ドロップダウン リスト コントロールをクリックし、Connect を選択してページを接続モードに切り替えます。 Connect モードでは、要素を<asp:connectionszone>
使用してコントロール間の接続を作成できます。 接続モードで、ZIP コード コントロールのタイトル バーの下向き矢印をクリックして動詞メニューをアクティブにし、[Connect] をクリックします。 接続ユーザー インターフェイス (UI) が表示されたら、メソッドに含まれるコードによって接続が既に作成されていることに Page_Load
注意してください。
注釈
このメソッドは、接続に provider
使用され、 consumer
両方のコントロールに互換性のある接続ポイントの種類があるため WebPartTransformer 、オブジェクトは必要ありません。 このメソッドを使用して、プログラム接続を作成するために呼び出す ConnectWebParts 前に、2 つのコントロールを接続できることを確認できます。
このオーバーロードはメソッド オーバーロードと同じ実装を CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) 使用しますが、唯一の例外は、このオーバーロードにトランスフォーマーが必要ない点です。
こちらもご覧ください
適用対象
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer)
接続に関係する WebPart コントロールをチェックして、こうしたコントロールが接続可能かどうかを判断し、WebPartTransformer オブジェクトを使用して互換性のないコンシューマーとプロバイダーの間に接続を作成します。
public:
virtual bool CanConnectWebParts(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 bool CanConnectWebParts (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 CanConnectWebParts : 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 -> bool
override this.CanConnectWebParts : 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 -> bool
Public Overridable Function CanConnectWebParts (provider As WebPart, providerConnectionPoint As ProviderConnectionPoint, consumer As WebPart, consumerConnectionPoint As ConsumerConnectionPoint, transformer As WebPartTransformer) As Boolean
パラメーター
- provider
- WebPart
コントロールを接続したときに、consumer
にデータを提供するコントロール。
- providerConnectionPoint
- ProviderConnectionPoint
provider
が接続に関与できるように、コールバック メソッドとして機能する ConnectionPoint。
- consumer
- WebPart
コントロールを接続したときに、provider
からデータを受け取るコントロール。
- consumerConnectionPoint
- ConsumerConnectionPoint
consumer
が接続に関与できるように、コールバック メソッドとして機能する ConnectionPoint。
- transformer
- WebPartTransformer
互換性のない provider
と consumer
の接続を可能にする WebPartTransformer。
戻り値
provider
と consumer
で接続を構成できるかどうかを示すブール値。
注釈
このメソッドは、オブジェクトが必要になるように、両方のコントロールに互換性のない接続ポイントの種類があるWebPartTransformer場合に接続するためにprovider``consumer
使用されます。 このメソッドを使用して、プログラム接続を作成するために呼び出す ConnectWebParts 前に、2 つのコントロールを接続できることを確認できます。
このオーバーロードはメソッド オーバーロードと同じ実装を CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) 使用しますが、唯一の例外は、このオーバーロードにトランスフォーマーが必要であるという点です。