Partager via


ConnectionProviderAttribute Classe

Définition

Identifie la méthode de rappel dans un contrôle serveur agissant comme le fournisseur dans une connexion WebPart et permet aux développeurs de spécifier des détails sur le point de connexion du fournisseur.

public ref class ConnectionProviderAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public class ConnectionProviderAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type ConnectionProviderAttribute = class
    inherit Attribute
Public Class ConnectionProviderAttribute
Inherits Attribute
Héritage
ConnectionProviderAttribute
Attributs

Exemples

L’exemple de code suivant illustre l’utilisation de la ConnectionProviderAttribute classe, en montrant comment déclarer l’élément ConnectionProviderAttribute de métadonnées sur une méthode de rappel dans un contrôle fournisseur. Notez que la surcharge la plus simple du constructeur est utilisée ; seule la valeur du displayName paramètre est fournie.

[ConnectionProvider("Row")]
public IWebPartRow GetConnectionInterface()
{
    return new RowProviderWebPart();
}
<ConnectionProvider("Row")> _
Public Function GetConnectionInterface() As IWebPartRow
    Return New RowProviderWebPart()

End Function 'GetConnectionInterface

Les exemples de code suivants montrent comment créer une connexion statique de base entre deux contrôles WebPart à l’aide de la WebPartConnection classe . Les fichiers de code fournisseur et consommateur doivent être placés dans le dossier App_Code sous le dossier d’application qui contient la page .aspx.

Le premier exemple montre une classe agissant en tant que fournisseur. Notez qu’une méthode est désignée comme méthode de rappel avec l’élément ConnectionProviderAttribute métadonnées.

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
//This sample code creates a Web Parts control that acts as a provider of row data.
namespace My 
{
    public sealed class RowProviderWebPart : WebPart, IWebPartRow 
    {

        private DataTable _table;

        public RowProviderWebPart() 
        {
            _table = new DataTable();

            DataColumn col = new DataColumn();
            col.DataType = typeof(string);
            col.ColumnName = "Name";
            _table.Columns.Add(col);

            col = new DataColumn();
            col.DataType = typeof(string);
            col.ColumnName = "Address";
            _table.Columns.Add(col);

            col = new DataColumn();
            col.DataType = typeof(int);
            col.ColumnName = "ZIP Code";
            _table.Columns.Add(col);

            DataRow row = _table.NewRow();
            row["Name"] = "John Q. Public";
            row["Address"] = "123 Main Street";
            row["ZIP Code"] = 98000;
            _table.Rows.Add(row);
        }
        [ConnectionProvider("Row")]
        public IWebPartRow GetConnectionInterface()
        {
            return new RowProviderWebPart();
        }
        public PropertyDescriptorCollection Schema 
        {
            get {
                return TypeDescriptor.GetProperties(_table.DefaultView[0]);
                }
        }
        public void GetRowData(RowCallback callback)
        {
            callback(_table.Rows);
        }
    }
}
Imports System.Collections
Imports System.ComponentModel
Imports System.Data
Imports System.Reflection
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

'This sample code creates a Web Parts control that acts as a provider of row data.
Namespace MyCustomWebPart

    Public NotInheritable Class RowProviderWebPart
        Inherits WebPart
        Implements IWebPartRow

        Private _table As DataTable


        Public Sub New()
            _table = New DataTable()

            Dim col As New DataColumn()
            col.DataType = GetType(String)
            col.ColumnName = "Name"
            _table.Columns.Add(col)

            col = New DataColumn()
            col.DataType = GetType(String)
            col.ColumnName = "Address"
            _table.Columns.Add(col)

            col = New DataColumn()
            col.DataType = GetType(Integer)
            col.ColumnName = "ZIP Code"
            _table.Columns.Add(col)

            Dim row As DataRow = _table.NewRow()
            row("Name") = "John Q. Public"
            row("Address") = "123 Main Street"
            row("ZIP Code") = 98000
            _table.Rows.Add(row)

        End Sub

        <ConnectionProvider("Row")> _
        Public Function GetConnectionInterface() As IWebPartRow
            Return New RowProviderWebPart()

        End Function 'GetConnectionInterface

        Public ReadOnly Property Schema() As PropertyDescriptorCollection _
            Implements IWebPartRow.Schema
            Get
                Return TypeDescriptor.GetProperties(_table.DefaultView(0))
            End Get
        End Property

        Public Sub GetRowData(ByVal callback As RowCallback) _
            Implements IWebPartRow.GetRowData
            callback(_table.Rows)

        End Sub
    End Class

Le deuxième exemple montre une classe agissant en tant que consommateur.

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
// This sample code creates a Web Parts control that acts as a consumer of row data.
namespace My 
{

    public sealed class RowConsumerWebPart : WebPart {
        private IWebPartRow _provider;
        private ICollection _tableData;
    
            private void GetRowData(object rowData)
            {
                _tableData = (ICollection)rowData;
            }

        protected override void OnPreRender(EventArgs e)
        {
                if (_provider != null)
                {
                    _provider.GetRowData(new RowCallback(GetRowData));
                }
        }

        protected override void RenderContents(HtmlTextWriter writer) {
            if (_provider != null) {
                PropertyDescriptorCollection props = _provider.Schema;
                int count = 0;
                if (props != null && props.Count > 0 && _tableData != null) {
                    foreach (PropertyDescriptor prop in props) 
                    {
                        foreach (DataRow o in _tableData)
                        {
                            writer.Write(prop.DisplayName + ": " + o[count]);
                            writer.WriteBreak();
                            writer.WriteLine();
                            count = count + 1;
                        }
                    }
                }
                else {
                    writer.Write("No data");
                }
            }
            else {
                writer.Write("Not connected");
            }
        }
        [ConnectionConsumer("Row")]
        public void SetConnectionInterface(IWebPartRow provider) 
        {
            _provider = provider;
        }
         }
    }
//}
Imports System.Collections
Imports System.ComponentModel
Imports System.Data
Imports System.Reflection
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

' This sample code creates a Web Parts control that acts as a consumer of row data.
Namespace MyCustomWebPart

    Public NotInheritable Class RowConsumerWebPart
        Inherits WebPart
        Private _provider As IWebPartRow
        Private _tableData As ICollection


        Private Sub GetRowData(ByVal rowData As Object)
            _tableData = CType(rowData, ICollection)

        End Sub


        Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
            If Not (_provider Is Nothing) Then
                '        _provider.GetRowData(AddressOf (New RowCallback(GetRowData)))
                _provider.GetRowData(AddressOf GetRowData)
                '    _provider.GetRowData(New RowCallback(AddressOf GetRowData))
            End If

        End Sub



        Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter)
            If Not (_provider Is Nothing) Then
                Dim props As PropertyDescriptorCollection = _provider.Schema
                Dim count As Integer = 0
                If Not (props Is Nothing) AndAlso props.Count > 0 AndAlso Not (_tableData Is Nothing) Then
                    Dim prop As PropertyDescriptor
                    For Each prop In props
                        Dim o As DataRow
                        For Each o In _tableData
                            writer.Write(prop.DisplayName & ": " & o(count))
                            writer.WriteBreak()
                            writer.WriteLine()
                            count = count + 1
                        Next o
                    Next prop
                Else
                    writer.Write("No data")
                End If
            Else
                writer.Write("Not connected")
            End If

        End Sub

        <ConnectionConsumer("Row")> _
        Public Sub SetConnectionInterface(ByVal provider As IWebPartRow)
            _provider = provider

        End Sub
    End Class

Le dernier exemple montre la page ASP.NET qui contient les deux contrôles.

<%@ page language="C#" %>
<%@ register TagPrefix="my" Namespace="My" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>IRow Test Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <!-- A static or dynamic connection is required to link two Web Parts controls. --->
        <asp:webpartmanager ID="WebPartManager1" runat="server">
            <staticconnections>
                <asp:webpartconnection ID="wp1" ProviderID="provider1" ConsumerID="consumer1" >
                </asp:webpartconnection>
            </staticconnections>
        </asp:webpartmanager>
       
        <asp:webpartzone ID="WebPartZone1" runat="server">
            <ZoneTemplate>
                <!-- The following two lines specify the two connected controls. --->
                <my:RowProviderWebPart ID="provider1" runat="server" ToolTip="Row Provider Control" />
                <my:RowConsumerWebPart ID="consumer1" runat="server" ToolTip="Row Consumer Control" />
            </ZoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>
<%@ page language="VB" %>
<%@ Register TagPrefix="my" Namespace="MyCustomWebPart" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>IRow Test Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <!-- A static or dynamic connection is required to link two Web Parts controls. --->
        <asp:webpartmanager ID="WebPartManager1" runat="server">
            <staticconnections>
                <asp:webpartconnection ID="wp1" ProviderID="provider1" ConsumerID="consumer1" >
                </asp:webpartconnection>
            </staticconnections>
        </asp:webpartmanager>
       
        <asp:webpartzone ID="WebPartZone1" runat="server">
            <ZoneTemplate>
                <my:RowProviderWebPart ID="provider1" runat="server" ToolTip="Row Provider Control" />
                <my:RowConsumerWebPart ID="consumer1" runat="server" ToolTip="Row Consumer Control" />
           </ZoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>

Remarques

Une connexion De composants WebPart se compose de deux contrôles serveur résidant dans une WebPartZoneBase zone et partageant des données au moyen d’une instance d’interface passée d’un contrôle à l’autre. Le contrôle qui sert l’instance d’interface est appelé fournisseur, et le contrôle qui reçoit l’instance d’interface et traite ou affiche les données est appelé consommateur. Pour plus d’informations sur les connexions, consultez vue d’ensemble WebPartConnection des connexions de la classe et des composants WebPart.

Le contrôle fournisseur dans une connexion peut être un WebPart contrôle ou n’importe quel type de contrôle serveur ou utilisateur, mais il doit avoir une méthode désignée comme méthode de rappel. La méthode de rappel est appelée pendant le processus de connexion, et son objectif est de renvoyer au consommateur une instance d’interface qui contient des données. Pour désigner la méthode qui sert de méthode de rappel dans un fournisseur, vous devez ajouter un ConnectionProviderAttribute élément de métadonnées à la méthode (l’élément est basé sur la ConnectionProviderAttribute classe ).

En plus de désigner la méthode de rappel dans un fournisseur, l’objet ConnectionProviderAttribute vous permet également de spécifier certains détails sur le point de connexion d’un fournisseur. Un point de connexion fournisseur est une instance de la ProviderConnectionPoint classe qui encapsule tous les détails d’un fournisseur nécessaires pour établir une connexion, y compris le type de contrôle du fournisseur, la possibilité de se connecter à plusieurs consommateurs en même temps, le type d’interface que le fournisseur sert aux consommateurs, les détails sur la méthode de rappel et un nom d’affichage qui représente le point de connexion du fournisseur dans l’interface utilisateur. Chaque connexion de composants WebPart inclut un point de connexion fournisseur associé au contrôle fournisseur.

Lorsque vous ajoutez l’élément ConnectionProviderAttribute de métadonnées à la méthode de rappel dans un fournisseur, vous pouvez également l’utiliser pour spécifier les détails suivants sur le point de connexion du fournisseur : un nom d’affichage pour le point de connexion (pour plus d’informations, voir la DisplayName propriété), si le fournisseur peut se connecter à plusieurs consommateurs en même temps (pour plus d’informations, voir la AllowsMultipleConnections propriété ), ID du point de connexion (pour plus d’informations, consultez la ID propriété) et le type du point de connexion utilisé par le fournisseur (pour plus d’informations, consultez la ConnectionPointType propriété ). Les quatre surcharges du constructeur pour la ConnectionProviderAttribute classe ont chacune des paramètres qui vous permettent de spécifier des valeurs pour une ou plusieurs de ces propriétés de point de connexion lors de la création d’une nouvelle instance de la classe. La plupart des propriétés d’un point de connexion de fournisseur peuvent également être définies par programme ; leur définition à l’aide de l’élément ConnectionProviderAttribute est facultative.

Notes

Lorsque vous ajoutez l’élément ConnectionProviderAttribute de métadonnées à une méthode de rappel dans un fournisseur, le seul paramètre obligatoire que vous devez toujours spécifier est le displayName paramètre (pour plus d’informations, consultez la surcharge du ConnectionProviderAttribute(String) constructeur). La valeur de ce paramètre est affectée à la DisplayName propriété, et lorsqu’un utilisateur ouvre l’interface utilisateur de connexion (créée par le contrôle), le ConnectionsZone nom d’affichage représente le point de connexion du fournisseur dans l’interface utilisateur. Si vous désignez plusieurs méthodes de rappel dans un contrôle fournisseur, vous avez le choix entre plusieurs points de connexion possibles, et lorsque vous ajoutez l’élément ConnectionProviderAttribute de métadonnées à chaque méthode de rappel, vous devez également spécifier une valeur pour le id paramètre, afin que chaque point de connexion du fournisseur dispose d’un identificateur unique connu.

Constructeurs

ConnectionProviderAttribute(String)

Initialise une nouvelle instance de la classe ConnectionProviderAttribute en spécifiant un nom complet pour le point de connexion fournisseur.

ConnectionProviderAttribute(String, String)

Initialise une nouvelle instance de la classe ConnectionProviderAttribute en spécifiant un nom complet et un ID pour le point de connexion fournisseur.

ConnectionProviderAttribute(String, String, Type)

Initialise une nouvelle instance de la classe ConnectionProviderAttribute, en spécifiant un nom complet, un ID et un type spécifique d’objet de point de connexion à utiliser pour le point de connexion fournisseur.

ConnectionProviderAttribute(String, Type)

Initialise une nouvelle instance de la classe ConnectionProviderAttribute, en spécifiant un nom complet et un type spécifique d'objet point de connexion à utiliser pour le point de connexion fournisseur.

Propriétés

AllowsMultipleConnections

Obtient ou définit une valeur qui indique si le point de connexion autorise plusieurs connexions.

ConnectionPointType

Obtient le type du point de connexion associé à un contrôle de fournisseur.

DisplayName

Obtient le nom convivial du point de connexion fournisseur.

DisplayNameValue

Obtient ou définit la chaîne utilisée comme valeur de la propriété DisplayName pour l'utiliser dans les scénarios de localisation.

ID

Obtient une chaîne qui représente l'identité unique de l'objet point de connexion fournisseur.

TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.

(Hérité de Attribute)

Méthodes

Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage de cette instance.

(Hérité de Attribute)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à

Voir aussi