Partager via


WebPartManager.CanConnectWebParts Méthode

Définition

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 être null.

  • 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.

S’applique à