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 ページを読み込んだ後、[ 表示モード ] ドロップダウン リスト コントロールをクリックし、[ 接続 ] を選択してページを接続モードに切り替えます。 接続モードでは、 要素を <asp:connectionszone>
使用して、コントロール間の接続を作成できます。 接続モードで、 ZIP コード コントロールのタイトル バーにある下向き矢印をクリックして動詞メニューをアクティブにし、[ 接続] をクリックします。 接続ユーザー インターフェイス (UI) が表示されたら、 メソッドに含まれるコードによって接続が既に作成されていることに Page_Load
注意してください。
注釈
このメソッドは、オブジェクトが不要になるように、両方のコントロールに互換性のある接続ポイントの種類があるWebPartTransformer場合と を接続provider
consumer
するために使用されます。 このメソッドを使用して、 を呼び出 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
で接続を構成できるかどうかを示すブール値。
注釈
このメソッドは、オブジェクトが必要になるように、consumer
両方のコントロールに互換性のない接続ポイントの種類があるWebPartTransformer場合と を接続provider
するために使用されます。 このメソッドを使用して、 を呼び出 ConnectWebParts してプログラム接続を作成する前に、2 つのコントロールを接続できることを確認できます。
このオーバーロードでは、メソッド オーバーロードと同じ実装が CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) 使用されます。唯一の例外は、このオーバーロードにトランスフォーマーが必要であることです。
適用対象
.NET