WebPartManager.CanConnectWebParts Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Vérifie les contrôles WebPart participant à une connexion pour déterminer s'ils peuvent être connectés.
Surcharges
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) |
Vérifie les contrôles WebPart qui participeront à une connexion afin de déterminer s'ils peuvent être connectés lorsque les contrôles consommateur et fournisseur ont des interfaces compatibles et qu'un objet WebPartTransformer n'est pas nécessaire. |
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) |
Vérifie les contrôles WebPart qui participeront à une connexion afin de déterminer s'ils peuvent être connectés, et utilise un objet WebPartTransformer pour créer la connexion entre un consommateur et un fournisseur incompatibles. |
Remarques
La CanConnectWebParts méthode est utilisée pour déterminer si deux WebPart contrôles peuvent être connectés. La méthode est généralement utilisée comme vérification conditionnelle avant d’appeler la ConnectWebParts méthode.
La CanConnectWebParts méthode vérifie un certain nombre de critères qui doivent être remplis pour que deux contrôles puissent former une connexion. La liste suivante récapitule les principaux critères d’établissement d’une connexion. Si tous ces critères (plus quelques conditions internes supplémentaires) sont remplis, la méthode retourne true
, ce qui signifie que les contrôles peuvent être connectés :
Les contrôles fournisseur et consommateur ne peuvent pas être
null
, et ils doivent être contenus dans la collection de contrôles référencés par la WebParts propriété .Le fournisseur et le consommateur ne peuvent pas avoir le même contrôle. En d’autres termes, un WebPart contrôle ne peut pas se connecter à lui-même.
Les ConnectionPoint objets (points de connexion) pour le fournisseur et le consommateur ne peuvent pas être
null
.Le fournisseur et le consommateur ne peuvent pas être fermés (aucune propriété du IsClosed contrôle ne peut être
true
).La ControlType propriété du contrôle de point de connexion doit correspondre au type du contrôle du consommateur et du fournisseur.
Les points de connexion doivent être activés (leurs GetEnabled méthodes doivent toutes deux retourner
true
).Chaque point de connexion ne doit pas tenter de former plus de connexions que ce qui est spécifié dans sa propre AllowsMultipleConnections propriété.
Si un WebPartTransformer objet (transformateur) est nécessaire pour connecter des contrôles incompatibles, il ne peut pas être
null
. Toutefois, si les contrôles sont déjà compatibles, le transformateur doit êtrenull
.Le transformateur (s’il est utilisé) doit être référencé dans la AvailableTransformers collection.
Le transformateur (s’il est utilisé) doit avoir des interfaces compatibles avec le fournisseur et le consommateur afin qu’il puisse transformer des données entre les deux contrôles. Les interfaces secondaires du consommateur et du fournisseur doivent également être compatibles.
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint)
Vérifie les contrôles WebPart qui participeront à une connexion afin de déterminer s'ils peuvent être connectés lorsque les contrôles consommateur et fournisseur ont des interfaces compatibles et qu'un objet WebPartTransformer n'est pas nécessaire.
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
Paramètres
- provider
- WebPart
Contrôle qui fournit les données à consumer
lorsque les contrôles sont connectés.
- providerConnectionPoint
- ProviderConnectionPoint
ConnectionPoint qui permet à provider
de participer à une connexion.
- consumer
- WebPart
Contrôle qui reçoit les données de provider
lorsque les contrôles sont connectés.
- consumerConnectionPoint
- ConsumerConnectionPoint
ConnectionPoint qui agit comme une méthode de rappel de manière à ce que consumer
puisse participer à une connexion.
Retours
Valeur Boolean qui indique si provider
et consumer
peuvent être connectés.
Exemples
L’exemple de code suivant montre comment utiliser cette méthode.
L’exemple de code comporte quatre parties :
Contrôle utilisateur qui vous permet de modifier les modes d’affichage d’une page de composants WebPart.
Page Web qui contient deux contrôles personnalisés WebPart qui peuvent être connectés, un élément et du
<asp:webpartmanager>
code de gestion des événements qui crée une connexion à l’aide de la CanConnectWebParts méthode .Fichier de code source qui contient deux contrôles personnalisés WebPart et une interface personnalisée.
Explication du fonctionnement de l’exemple dans un navigateur.
La première partie de l’exemple de code est le contrôle utilisateur permettant de modifier les modes d’affichage. Vous pouvez obtenir le code source du contrôle utilisateur à partir de la section Exemple de la vue d’ensemble de la WebPartManager classe. Pour plus d’informations sur les modes d’affichage et le fonctionnement du contrôle utilisateur, consultez Procédure pas à pas : modification des modes d’affichage sur une page de composants WebPart.
Le balisage déclaratif de la page web contient Register
des directives pour le contrôle utilisateur et les contrôles personnalisés. Il existe un <asp:webpartmanager>
élément, un <asp:webpartzone>
élément pour contenir les contrôles personnalisés et un <asp:connectionszone>
élément. Notez que dans la Page_Load
méthode, le code vérifie si la connexion peut être établie et, si c’est le cas, définit un fournisseur, un consommateur et leurs points de connexion respectifs, puis ajoute une nouvelle connexion au jeu de connexions statiques référencées par la StaticConnections propriété.
<%@ 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>
La troisième partie de l’exemple est le code source des contrôles. Il contient une interface et deux contrôles personnalisés WebPart , l’un agissant en tant que fournisseur et l’autre en tant que consommateur. Étant donné qu’ils ont des points de connexion compatibles (tous deux reconnaissent l’interface IZipCode
), un transformateur n’est pas nécessaire pour effectuer la connexion. Pour que l’exemple de code s’exécute, vous devez compiler ce code source. Vous pouvez le compiler explicitement et placer l’assembly résultant dans le dossier Bin de votre site web ou dans le global assembly cache. Vous pouvez également placer le code source dans le dossier App_Code de votre site, où il sera compilé dynamiquement au moment de l’exécution. Pour obtenir une procédure pas à pas qui montre comment compiler, consultez Procédure pas à pas : Développement et utilisation d’un contrôle de serveur web personnalisé.
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
Une fois que vous avez chargé la page Web dans un navigateur, cliquez sur le contrôle de liste déroulante Mode d’affichage , puis sélectionnez Se connecter pour basculer la page en mode connexion. Le mode Connexion utilise l’élément <asp:connectionszone>
pour vous permettre de créer des connexions entre les contrôles. En mode connexion, cliquez sur la flèche vers le bas dans la barre de titre du contrôle Code postal pour activer son menu verbes, puis cliquez sur Se connecter. Une fois l’interface utilisateur de connexion affichée, notez qu’une connexion a déjà été créée par le code contenu dans la Page_Load
méthode.
Remarques
Cette méthode est utilisée pour se connecter provider
et consumer
lorsque les deux contrôles ont des types de points de connexion compatibles, de sorte qu’un WebPartTransformer objet n’est pas nécessaire. Vous pouvez utiliser cette méthode pour vérifier que deux contrôles peuvent être connectés avant d’appeler ConnectWebParts pour créer une connexion par programme.
Cette surcharge utilise la même implémentation que la surcharge de CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) méthode, à la seule exception du fait que cette surcharge ne nécessite pas de transformateur.
Voir aussi
S’applique à
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer)
Vérifie les contrôles WebPart qui participeront à une connexion afin de déterminer s'ils peuvent être connectés, et utilise un objet WebPartTransformer pour créer la connexion entre un consommateur et un fournisseur incompatibles.
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
Paramètres
- provider
- WebPart
Contrôle qui fournit les données à consumer
lorsque les contrôles sont connectés.
- providerConnectionPoint
- ProviderConnectionPoint
ConnectionPoint qui agit comme une méthode de rappel de manière à ce que provider
puisse participer à une connexion.
- consumer
- WebPart
Contrôle qui reçoit les données de provider
lorsque les contrôles sont connectés.
- consumerConnectionPoint
- ConsumerConnectionPoint
ConnectionPoint qui agit comme une méthode de rappel de manière à ce que consumer
puisse participer à une connexion.
- transformer
- WebPartTransformer
WebPartTransformer qui permet à un provider
et un consumer
incompatibles de se connecter.
Retours
Valeur Boolean qui indique si provider
et consumer
peuvent former une connexion.
Remarques
Cette méthode est utilisée pour se connecter provider
et consumer
lorsque les deux contrôles ont des types de points de connexion incompatibles, de sorte qu’un WebPartTransformer objet est requis. Vous pouvez utiliser cette méthode pour vérifier que deux contrôles peuvent être connectés avant d’appeler ConnectWebParts pour créer une connexion par programme.
Cette surcharge utilise la même implémentation que la surcharge de CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) méthode, à la seule exception du fait que cette surcharge nécessite un transformateur.