Partager via


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 : de manière déclarative, en plaçant des balises pour la connexion dans le balisage de la page Web ; programmatiquement, 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 des 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 attribuant le nom de fichier attribué à 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 de 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 en tant que contrôle 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 en tant que méthode de rappel pour le point de connexion du fournisseur. L’autre WebPart classe est nommée WeatherWebPartet agit en tant que 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 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. 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. En haut se trouvent les Register directives pour le contrôle utilisateur et les contrôles personnalisés WebPart . Étant donné que l’exemple suppose la compilation dynamique des contrôles, le code source des contrôles doit se trouver dans un sous-dossier App_Code ; la Register balise de la page fait uniquement référence à un préfixe de balise arbitraire et à l’espace de noms des contrôles. Les contrôles personnalisés WebPart (le fournisseur et le 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 créer 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 au sein de celui-ci est un <asp:WebPartConnections> élément, avec les différents détails du consommateur et du fournisseur de la connexion spécifiés 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 créer une connexion.

La page montre également une troisième façon 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 les détails de son point de connexion en appelant la GetProviderConnectionPoints méthode . Il effectue une tâche similaire pour le contrôle du consommateur, en 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 , qui s’affiche 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, puis notez que chacun a une option Se connecter . Il s’agit d’un verbe de connexion, qui s’affiche 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 contrôle s’affiche ConnectionsZone . Cliquez sur le bouton Déconnecter pour mettre fin à la connexion statique entre les contrôles. Utilisez le contrôle Mode d’affichage pour renvoyer la page en mode de navigation. Essayez à nouveau 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 à nouveau la page en mode d’affichage de connexion. Cliquez sur un verbe de connexion sur l’un des contrôles. Cliquez sur le lien Créer une connexion , puis 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 permettant de 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 mettre fin à la connexion actuelle que vous venez de créer. Retournez la page en mode de navigation. 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 des contrôles WebPart , qui illustre la troisième méthode de formation d’une connexion. Cette approche connecte les contrôles par programmation en 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 WebPart, une connexion est un lien ou une association entre deux WebPart contrôles (ou un autre contrôle serveur ou utilisateur) qui leur permet de partager des données. Cette possibilité de partager des données permet aux contrôles connectés d’être utilisés d’une manière qui dépasse 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 basées sur le code postal, la capacité connectée des deux contrôles offre plus de valeur aux utilisateurs. Pour étendre cet exemple, d’autres contrôles pourraient ê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 fonctionner avec des données de code postal pourraient partager des données avec le contrôle unique qui fournit un code postal. Les utilisateurs finaux d’applications 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 des connexions standard fournie par le contrôle ou à l’aide ConnectionsZone 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 Vue d’ensemble des connexions de composants WebPart 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 de composants WebPart :

  • Deux contrôles WebPart. Chaque connexion de composants WebPart se compose de deux contrôles. Il est possible qu’un contrôle participe à plusieurs connexions simultanément, mais chaque connexion se compose exactement de deux contrôles. Les contrôles peuvent dériver directement de la WebPart classe de base, ou il peut s’agir d’autres contrôles serveur, notamment des contrôles ASP.NET, des contrôles serveur personnalisés et des 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 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 WebPart .

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

  • Consommateurs et fournisseurs. Dans chaque connexion de composants WebPart, il existe deux contrôles : un fournisseur de données et un consommateur de données. Le fournisseur fournit des données au consommateur via 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 du 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 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 valide. Pour qu’une connexion fonctionne, le consommateur et le fournisseur doivent soit ê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), soit il doit y avoir un WebPartTransformer objet capable de traduire le type proposé par le fournisseur en 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 aux contrôles fournisseur et consommateur, ainsi que les détails de leurs points de connexion. Si le fournisseur et le consommateur sont incompatibles et 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 des 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. L’une des façons de procéder consiste à créer la connexion par le biais de 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 d’initier 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 la même. L’application appelle la ConnectWebParts méthode (ou la ConnectWebParts méthode si vous utilisez un transformateur) sur le WebPartManager contrôle, en lui passant 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 . Une valeur doit être affectée à toutes ces propriétés de connexion liées au consommateur 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é fait référence au 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 ne partage pas activement les 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