WebPartConnection Classe

Définition

Fournit un objet qui permet à deux contrôles WebPart de former une connexion. Cette classe ne peut pas être héritée.

public ref class WebPartConnection sealed
[System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))]
public sealed class WebPartConnection
[<System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))>]
type WebPartConnection = class
Public NotInheritable Class WebPartConnection
Héritage
WebPartConnection
Attributs

Exemples

L’exemple de code suivant montre comment créer une connexion simple entre deux WebPart contrôles. L’exemple montre trois façons de former une connexion : déclarativement, en plaçant des balises pour la connexion dans le balisage de la page Web; par programmation, en créant la connexion dans le code ; et via l’interface utilisateur, en plaçant un ConnectionsZone contrôle sur la page, ce qui permet aux utilisateurs d’établir une connexion.

L’exemple de code comporte quatre parties :

  • Contrôle utilisateur qui vous permet de modifier le mode d’affichage composants WebPart sur une page.

  • Code source pour une interface et deux WebPart contrôles agissant en tant que fournisseur et consommateur pour une connexion.

  • Page Web pour héberger tous les contrôles et exécuter l’exemple de code.

  • Explication de l’exécution de l’exemple de page.

La première partie de cet exemple de code est le contrôle utilisateur qui permet aux utilisateurs de modifier les modes d’affichage sur une page Web. Enregistrez le code source suivant dans un fichier .ascx, en lui donnant le nom de fichier affecté à l’attribut Src de la Register directive pour ce contrôle utilisateur, qui se trouve en haut de la page web d’hébergement. Pour plus d’informations sur les modes d’affichage et une description du code source dans ce contrôle, consultez Procédure pas à pas : Modification des modes d’affichage sur une page composants WebPart.

<%@ 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" 
      AssociatedControlID="DisplayModeDropdown"/>
    <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="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" 
      AssociatedControlID="DisplayModeDropdown"/>
    <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>

La deuxième partie de l’exemple de code est le code source de l’interface et des contrôles. Le fichier source contient une interface simple nommée IZipCode. Il existe également une WebPart classe nommée ZipCodeWebPart qui implémente l’interface et agit comme contrôle de fournisseur. Sa ProvideIZipCode méthode est la méthode de rappel qui implémente le seul membre de l’interface. La méthode retourne simplement une instance de l’interface. Notez que la méthode est marquée avec un ConnectionProvider attribut dans ses métadonnées. Il s’agit du mécanisme permettant d’identifier la méthode comme méthode de rappel pour le point de connexion du fournisseur. L’autre WebPart classe est nommée WeatherWebPart, et elle agit comme consommateur pour la connexion. Cette classe a une méthode nommée GetZipCode qui obtient une instance de l’interface IZipCode à partir du contrôle fournisseur. Notez que cette méthode est marquée comme méthode de point de connexion du consommateur avec un ConnectionConsumer attribut dans ses métadonnées.

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 cache d’assembly global. 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. Cet exemple de code utilise la compilation dynamique. 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 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 (!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 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);
    }
  }
}
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

    Protected Overrides Sub CreateChildControls()
      Controls.Clear()
      DisplayContent = New Label()
      Me.Controls.Add(DisplayContent)

    End Sub

  End Class

End Namespace

La troisième partie de l’exemple de code est la page Web. Près du haut sont les Register directives pour le contrôle utilisateur et les contrôles personnalisés WebPart . Étant donné que l’exemple suppose une compilation dynamique des contrôles, le code source des contrôles doit se trouver dans un sous-dossier App_Code; la Register balise dans la page fait référence uniquement à un préfixe de balise arbitraire et à l’espace de noms des contrôles. Les contrôles personnalisés WebPart (fournisseur et consommateur) sont déclarés dans l’élément de <asp:webpartzone> la page Web, à l’intérieur d’un <zonetemplate> élément.

La page fournit trois façons de former une connexion entre les contrôles personnalisés. La première méthode est déclarative. Dans le balisage de la page, un <StaticConnections> élément est déclaré, et dans celui-ci est un <asp:WebPartConnections> élément, avec les différents détails du consommateur et du fournisseur de la connexion spécifiée en tant qu’attributs. Il s’agit d’une façon de créer une connexion, en la déclarant directement dans la page Web, en particulier dans l’élément <asp:WebPartManager> . En raison de cette connexion statique, une connexion entre les deux contrôles personnalisés est créée immédiatement la première fois que la page se charge.

Une deuxième méthode pour former une connexion entre les contrôles est fournie par l’élément <asp:connectionszone> de la page. Si un utilisateur bascule une page en mode d’affichage de connexion au moment de l’exécution et clique sur un verbe de connexion sur l’un des contrôles personnalisés, l’élément <asp:connectionszone> affiche automatiquement l’interface utilisateur pour la création d’une connexion.

La page montre également un troisième moyen de créer une connexion, qui consiste à le faire par programmation. Dans la Button1_Click méthode, le code crée un ProviderConnectionPoint objet pour le contrôle fournisseur et récupère ses détails de point de connexion en appelant la GetProviderConnectionPoints méthode. Il effectue une tâche similaire pour le contrôle consommateur, appelant la GetConsumerConnectionPoints méthode. Enfin, il crée le nouvel WebPartConnection objet en appelant la ConnectWebParts méthode sur le WebPartManager contrôle.

<%@ 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"];
    WebPartConnection conn1 = mgr.ConnectWebParts(zip1, provPoint,
      weather1, connPoint);
  }

  protected void mgr_DisplayModeChanged(object sender, 
    WebPartDisplayModeEventArgs e)
  {
    if (mgr.DisplayMode == WebPartManager.ConnectDisplayMode)
      Button1.Visible = true;
    else
      Button1.Visible = false;
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="mgr" runat="server" 
    OnDisplayModeChanged="mgr_DisplayModeChanged">
        <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="Connect WebPart Controls" 
        OnClick="Button1_Click" 
    Visible="false" />
    </div>
    </form>
</body>
</html>
<%@ 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")
    mgr.ConnectWebParts(zip1, provPoint, weather1, connPoint)

  End Sub

  Protected Sub mgr_DisplayModeChanged (ByVal sender as Object, _
    ByVal e as WebPartDisplayModeEventArgs)

    If mgr.DisplayMode Is WebPartManager.ConnectDisplayMode Then
    Button1.Visible = True
    Else
    Button1.Visible = False
    End If

  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="mgr" runat="server" 
    OnDisplayModeChanged="mgr_DisplayModeChanged">
        <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="Connect WebPart Controls" 
        OnClick="Button1_Click" 
    Visible="false" />
    </div>
    </form>
</body>
</html>

Une fois que vous avez chargé la page Web dans un navigateur, la première connexion existe déjà, car elle est déclarée dans l’élément <StaticConnections> . Entrez du texte dans le contrôle Fournisseur de code postal et s’affichez dans le contrôle consommateur. Ensuite, déconnectez les deux contrôles. À l’aide du contrôle de liste déroulante Mode d’affichage , modifiez la page pour connecter le mode d’affichage. Cliquez sur le menu verbes (représenté par une flèche vers le bas dans la barre de titre) pour chacun des WebPart contrôles et notez que chacun a une option de Connecter. Il s’agit d’un verbe de connexion, qui apparaît dans le menu verbes uniquement lorsque la page est en mode connexion. Cliquez sur le verbe de connexion sur l’un des contrôles, et l’interface utilisateur de connexion fournie par le ConnectionsZone contrôle s’affiche. Cliquez sur le bouton Déconnecter pour terminer la connexion statique entre les contrôles. Utilisez le contrôle Mode d’affichage pour renvoyer la page en mode Parcourir. Essayez d’entrer un nouveau texte dans le fournisseur et notez que, étant donné que les contrôles sont déconnectés, le texte ne parvient pas à être mis à jour dans le contrôle consommateur.

Ensuite, utilisez la même méthode que ci-dessus pour basculer la page en mode d’affichage de connexion à nouveau. Cliquez sur un verbe de connexion sur l’un des contrôles. Cliquez sur le lien Créer une connexion et utilisez l’interface utilisateur fournie par le ConnectionsZone contrôle pour créer une connexion entre les contrôles. Il s’agit de la deuxième méthode pour créer une connexion. Notez que dès que la connexion est formée, la dernière chaîne que vous avez entrée dans le contrôle fournisseur (qui n’a pas pu apparaître parce que les contrôles ont été déconnectés) apparaît soudainement dans le consommateur, car la connexion a été recréée. Cliquez sur le bouton Déconnecter pour terminer la connexion actuelle que vous venez de créer. Retournez la page pour parcourir le mode. Entrez un nouveau texte dans le fournisseur pour démontrer que le texte n’est pas mis à jour et que les contrôles sont à nouveau déconnectés.

Retournez la page pour connecter le mode d’affichage. Au lieu de cliquer sur un verbe de connexion, cliquez sur le bouton Connecter Contrôles WebPart, qui illustre la troisième méthode de création d’une connexion. Cette approche connecte les contrôles par programmation à une étape simple sans avoir à utiliser le ConnectionsZone contrôle. Notez que lorsque la connexion est créée, la dernière chaîne que vous avez entrée dans le fournisseur apparaît soudainement dans le contrôle consommateur.

Remarques

Dans le jeu de contrôles composants WebPart, une connexion est un lien ou une association entre deux WebPart contrôles (ou autre serveur ou utilisateur) qui leur permettent de partager des données. Cette possibilité de partager des données permet aux contrôles connectés d’être utilisés de manière à dépasser les fonctionnalités offertes par les contrôles isolés. Par exemple, si un contrôle fournit des données de code postal et qu’un autre contrôle peut lire ces données et fournir des informations météorologiques locales en fonction du code postal, la fonctionnalité connectée des deux contrôles fournit plus de valeur aux utilisateurs. Pour étendre cet exemple, d’autres contrôles peuvent être créés qui affichent également des informations basées sur un code postal, comme un contrôle avec des liens vers des actualités locales, et tous ces contrôles qui peuvent utiliser des données de code postal peuvent partager des données avec le seul contrôle qui fournit un code postal. Les utilisateurs finaux d’applications composants WebPart peuvent créer et gérer des connexions entre tous ces contrôles compatibles directement à partir d’un navigateur Web, à l’aide de l’interface utilisateur de connexions standard fournie par le ConnectionsZone contrôle ou à l’aide d’une interface utilisateur personnalisée fournie par un développeur.

Cette WebPartConnection vue d’ensemble de la classe est une instruction générale des détails de base pour la création d’une connexion. Pour plus d’informations sur les composants et les exigences spécifiques impliqués dans la création de connexions, consultez composants WebPart Vue d’ensemble des connexions, ou consultez les classes de référence et les exemples de code mentionnés dans la discussion suivante. Il existe plusieurs aspects fondamentaux d’une connexion composants WebPart :

  • Deux WebPart contrôles. Chaque connexion composants WebPart se compose de deux contrôles. Il est possible qu’un contrôle participe simultanément à plusieurs connexions, mais chaque connexion unique se compose exactement de deux contrôles. Les contrôles peuvent dériver directement de la WebPart classe de base, ou ils peuvent être d’autres contrôles serveur, notamment les contrôles ASP.NET, les contrôles de serveur personnalisés et les contrôles utilisateur. Les contrôles qui ne dérivent pas de la WebPart classe, s’ils sont placés dans une WebPartZoneBase zone, sont automatiquement encapsulés avec un GenericWebPart objet au moment WebPart de l’exécution, ce qui leur permet d’hériter de la WebPart classe et de fonctionner en tant que contrôles d’exécution.

  • Contrôles résidant dans des WebPartZoneBase zones. Les WebPart contrôles et tout autre type de contrôle de serveur doivent résider dans une WebPartZoneBase zone pour pouvoir participer aux connexions composants WebPart (et la plupart des autres fonctionnalités composants WebPart).

  • Consommateurs et fournisseurs. Dans chaque composants WebPart connexion, il existe deux contrôles : un fournisseur de données et un consommateur de données. Le fournisseur fournit des données au consommateur par le biais d’une méthode de rappel spécifiée qui retourne des données sous la forme d’une interface. (Pour obtenir un exemple de création et de spécification de la méthode de rappel, consultez la section Exemple de cette rubrique.) Cette méthode de rappel est appelée point de connexion fournisseur. Les détails de ce point de connexion (son nom « convivial », un ID et le type de l’interface retournée) sont contenus dans un ProviderConnectionPoint objet associé au contrôle du fournisseur. Le consommateur reçoit les données via une méthode spécifiée qui peut accepter une instance de l’interface. Cette méthode est appelée point de connexion consommateur et les détails du point de connexion (nom, ID et type d’interface) sont contenus dans un ConsumerConnectionPoint objet associé au contrôle consommateur.

  • Contrôles compatibles ou transformateur valides. Pour qu’une connexion fonctionne, le consommateur et le fournisseur doivent être compatibles (ce qui signifie que leurs méthodes de point de connexion spécifiées peuvent fonctionner avec le même type d’interface), ou il doit y avoir un WebPartTransformer objet capable de traduire le type proposé par le fournisseur dans un type compris par le consommateur.

  • Objet WebPartConnection. Pour qu’une connexion existe, il doit y avoir une instance de la WebPartConnection classe qui contient des références au fournisseur et aux contrôles consommateur, ainsi que les détails de leurs points de connexion. Si le fournisseur et le consommateur sont incompatibles et qu’ils utilisent plutôt un WebPartTransformer objet pour se connecter, la connexion fait référence au transformateur.

  • Moyen d’établir la connexion. Une fois que les contrôles de consommateur et de fournisseur compatibles ont été correctement conçus avec les méthodes de point de connexion et placés dans une zone, et qu’un WebPartConnection objet est disponible, la dernière étape de base nécessaire consiste à lancer la connexion. Une façon qui peut se produire est que les utilisateurs créent la connexion via l’interface utilisateur. Si vous placez un <asp:connectionszone> élément sur la page et que les autres composants requis pour une connexion sont en place, au moment de l’exécution, un utilisateur peut basculer la page en mode d’affichage de connexion, cliquer sur un verbe de connexion dans le menu verbes du fournisseur ou du consommateur, et une interface utilisateur de connexion (basée sur le ConnectionsZone contrôle) s’affiche. Grâce à cette interface utilisateur, l’utilisateur peut lancer la connexion. Une autre façon de lancer la connexion consiste à le faire par programmation. Dans les deux cas, que ce soit via l’interface utilisateur ou par programmation, la méthode sous-jacente qui lance la connexion est identique. L’application appelle la ConnectWebParts méthode (ou la ConnectWebParts méthode si vous utilisez un transformateur) sur le WebPartManager contrôle, en lui transmettant le fournisseur, le consommateur et leurs objets de point de connexion respectifs, et la méthode retourne un WebPartConnection objet.

La WebPartConnection classe définit un objet qui encapsule les détails essentiels d’une connexion entre deux WebPart contrôles. La classe se compose presque entièrement de propriétés liées aux détails d’une connexion particulière. Plusieurs propriétés concernent le contrôle consommateur dans une connexion. La Consumer propriété fait référence au contrôle consommateur lui-même, et la ConsumerID propriété fait référence à l’ID du consommateur. L’objet ConsumerConnectionPoint , qui contient les détails du point de connexion du consommateur, est référencé par la propriété du ConsumerConnectionPoint consommateur. La ConsumerConnectionPointID propriété fait référence à l’ID de l’objet ConsumerConnectionPoint . Toutes ces propriétés de connexion liées au consommateur doivent avoir une valeur qui leur est attribuée pour créer une connexion.

La WebPartConnection classe a également plusieurs propriétés qui se rapportent au contrôle fournisseur dans une connexion, et celles-ci correspondent aux propriétés d’un consommateur. La Provider propriété référence le contrôle fournisseur lui-même, tandis que la ProviderID propriété fait référence à son ID. La ProviderConnectionPoint propriété fait référence à l’objet ProviderConnectionPoint et la ProviderConnectionPointID propriété fait référence à l’ID du point de connexion du fournisseur.

Plusieurs propriétés concernent l’état de la connexion. La IsActive propriété indique si la connexion est active (en cours d’échange de données) ou inactive (toujours connectée, mais pas activement partage de données). La IsShared propriété indique si la connexion est partagée (disponible pour tous les utilisateurs d’une page) ou une connexion spécifique à l’utilisateur, et la IsStatic propriété indique si le contrôle est statique (déclaré dans le balisage de page et donc permanent) ou dynamique (créé par programmation, ce qui signifie qu’il peut être supprimé).

Constructeurs

WebPartConnection()

Initialise une nouvelle instance de la classe WebPartConnection.

Propriétés

Consumer

Obtient un objet WebPart qui agit comme le contrôle consommateur dans une connexion.

ConsumerConnectionPoint

Obtient l'objet qui sert de point de connexion pour un contrôle qui agit comme consommateur dans une connexion.

ConsumerConnectionPointID

Obtient ou définit la valeur de propriété sur une connexion qui fait référence à l'ID de l'objet servant de point de connexion consommateur pour cette connexion.

ConsumerID

Obtient ou définit la valeur de propriété sur une connexion qui fait référence à l'ID du contrôle WebPart agissant comme consommateur pour cette connexion.

ID

Obtient ou définit l'ID d'un objet WebPartConnection.

IsActive

Obtient une valeur qui indique si un objet WebPartConnection est actuellement établi et capable d'échanger des données entre son contrôle fournisseur et son contrôle consommateur.

IsShared

Obtient une valeur qui indique si un objet WebPartConnection est visible pour tous les utilisateurs ou uniquement pour l'utilisateur actuel.

IsStatic

Obtient une valeur qui indique si un objet WebPartConnection est déclaré dans le balisage d'une page Web ou a été créé par programme.

Provider

Obtient un WebPart contrôle qui agit comme fournisseur dans une connexion WebPart.

ProviderConnectionPoint

Obtient l'objet qui sert de point de connexion pour un contrôle WebPart agissant comme fournisseur pour une connexion.

ProviderConnectionPointID

Obtient ou définit la valeur de propriété sur une connexion qui fait référence à l'ID de l'objet servant de point de connexion fournisseur pour cette connexion.

ProviderID

Obtient ou définit la valeur de propriété sur une connexion qui fait référence à l'ID du contrôle WebPart agissant comme fournisseur pour cette connexion.

Transformer

Obtient un objet WebPartTransformer utilisé pour transformer des données entre deux points de connexion normalement incompatibles dans une connexion WebPart.

Transformers

Obtient une collection d'objets WebPartTransformer utilisés en interne par le jeu de contrôles WebPart.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Substitue la méthode ToString() héritée et retourne un nom de type court pour l'objet de connexion.

S’applique à

Voir aussi