ConnectionProviderAttribute Klas

Definitie

Identificeert de callback-methode in een serverbesturing die fungeert als de provider in een verbinding met webonderdelen en stelt ontwikkelaars in staat om details op te geven over het verbindingspunt van de provider.

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
Overname
ConnectionProviderAttribute
Kenmerken

Voorbeelden

In het volgende codevoorbeeld wordt het gebruik van de ConnectionProviderAttribute klasse gedemonstreerd door te laten zien hoe u het ConnectionProviderAttribute metagegevenselement kunt declareren in een callback-methode in een providerbesturing. Houd er rekening mee dat de eenvoudigste overbelasting van de constructor wordt gebruikt; alleen de displayName parameterwaarde wordt opgegeven.

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

End Function 'GetConnectionInterface

In de volgende codevoorbeelden ziet u hoe u een eenvoudige, statische verbinding maakt tussen twee besturingselementen voor webonderdelen met behulp van de WebPartConnection klasse. De provider- en consumentencodebestanden moeten in de App_Code map worden geplaatst onder de toepassingsmap die de .aspx pagina bevat.

In het eerste voorbeeld ziet u een klasse die fungeert als provider. U ziet dat een methode is aangewezen als de callback-methode met het ConnectionProviderAttribute metagegevenselement.

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

In het tweede voorbeeld ziet u een klasse die als consument fungeert.

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

In het laatste voorbeeld ziet u de ASP.NET pagina met de twee besturingselementen.

<%@ 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>

Opmerkingen

Een webonderdelenverbinding bestaat uit twee serverbesturingselementen die zich in een WebPartZoneBase zone bevinden en gegevens delen door middel van een interface-exemplaar dat van het ene besturingselement naar het andere wordt doorgegeven. Het besturingselement dat het interface-exemplaar dient, wordt de provider genoemd en het besturingselement dat het interface-exemplaar en de processen ontvangt of de gegevens weergeeft, wordt de consument genoemd. Zie het WebPartConnection overzicht van de klasse- en webonderdelenverbindingen voor meer informatie over verbindingen.

Het besturingselement van de provider in een verbinding kan een WebPart besturingselement of een willekeurig type server- of gebruikersbeheer zijn, maar moet een methode hebben die is aangewezen als een callback-methode. De callback-methode wordt aangeroepen tijdens het verbindingsproces en het doel ervan is om terug te keren naar de consument een interface-exemplaar dat gegevens bevat. Als u de methode wilt aanwijzen die fungeert als de callback-methode in een provider, moet u een ConnectionProviderAttribute metagegevenselement toevoegen aan de methode (het element is gebaseerd op de ConnectionProviderAttribute klasse).

Naast het aanwijzen van de callback-methode in een provider, kunt u met het ConnectionProviderAttribute object ook bepaalde gegevens over het verbindingspunt van een provider opgeven. Een providerverbindingspunt is een exemplaar van de ProviderConnectionPoint klasse die alle details bevat van een provider die nodig is om een verbinding tot stand te brengen, inclusief het besturingstype van de provider, of deze tegelijkertijd verbinding kan maken met meerdere consumenten, welk type interface de provider dient voor consumenten, details over de callback-methode en een weergavenaam die het providerverbindingspunt in de gebruikersinterface (UI) vertegenwoordigt. Elke verbinding met webonderdelen bevat een providerverbindingspunt dat is gekoppeld aan het providerbeheer.

Wanneer u het ConnectionProviderAttribute metagegevenselement toevoegt aan de callback-methode in een provider, kunt u het ook gebruiken om de volgende details op te geven over het verbindingspunt van de provider: een weergavenaam voor het verbindingspunt (zie de DisplayName eigenschap voor meer informatie), of de provider tegelijkertijd verbinding kan maken met meerdere consumenten (zie de AllowsMultipleConnections eigenschap voor meer informatie). een id voor het verbindingspunt (voor meer informatie, zie de ID eigenschap) en het type verbindingspunt dat de provider gebruikt (zie de ConnectionPointType eigenschap voor meer informatie). De vier overbelastingen van de constructor voor de ConnectionProviderAttribute klasse hebben elk parameters waarmee u waarden kunt opgeven voor een of meer van deze verbindingspunteigenschappen wanneer een nieuw exemplaar van de klasse wordt gemaakt. De meeste eigenschappen voor een providerverbindingspunt kunnen ook programmatisch worden ingesteld; het instellen van deze elementen met behulp van het ConnectionProviderAttribute element is optioneel.

Note

Wanneer u het ConnectionProviderAttribute metagegevenselement toevoegt aan een callback-methode in een provider, is de enige vereiste parameter die u altijd moet opgeven de displayName parameter (zie de overbelasting van de ConnectionProviderAttribute(String) constructor voor meer informatie). De waarde van deze parameter wordt toegewezen aan de DisplayName eigenschap en wanneer een gebruiker de verbindingsinterface opent (gemaakt door het ConnectionsZone besturingselement), vertegenwoordigt de weergavenaam het verbindingspunt van de provider in de gebruikersinterface. Als u meerdere callback-methoden aanwijst in een providerbeheer, hebt u meerdere mogelijke verbindingspunten waaruit u kunt kiezen. Wanneer u het ConnectionProviderAttribute metagegevenselement toevoegt aan elke callback-methode, moet u ook een waarde opgeven voor de id parameter, zodat elk providerverbindingspunt een bekende, unieke id heeft.

Constructors

Name Description
ConnectionProviderAttribute(String, String, Type)

Initialiseert een nieuw exemplaar van de ConnectionProviderAttribute klasse, waarbij een weergavenaam, een id en een specifiek type verbindingspuntobject worden opgegeven dat moet worden gebruikt voor het verbindingspunt van de provider.

ConnectionProviderAttribute(String, String)

Initialiseert een nieuw exemplaar van de ConnectionProviderAttribute klasse, waarbij een weergavenaam en een id voor het verbindingspunt van de provider worden opgegeven.

ConnectionProviderAttribute(String, Type)

Initialiseert een nieuw exemplaar van de ConnectionProviderAttribute klasse, waarbij een weergavenaam en een specifiek type verbindingspuntobject worden opgegeven dat moet worden gebruikt voor het verbindingspunt van de provider.

ConnectionProviderAttribute(String)

Initialiseert een nieuw exemplaar van de ConnectionProviderAttribute klasse, waarbij een weergavenaam wordt opgegeven voor het verbindingspunt van de provider.

Eigenschappen

Name Description
AllowsMultipleConnections

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of het verbindingspunt meerdere verbindingen toestaat.

ConnectionPointType

Hiermee haalt u het type verbindingspunt op dat is gekoppeld aan een providerbeheer.

DisplayName

Hiermee haalt u de beschrijvende naam van het verbindingspunt van de provider op.

DisplayNameValue

Hiermee haalt u de tekenreeks op die wordt gebruikt als de waarde van de DisplayName eigenschap, voor gebruik in lokalisatiescenario's.

ID

Hiermee haalt u een tekenreeks op die de unieke identiteit van het verbindingspuntobject van de provider vertegenwoordigt.

TypeId

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id.

(Overgenomen van Attribute)

Methoden

Name Description
Equals(Object)

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
GetHashCode()

Retourneert de hash-code voor dit exemplaar.

(Overgenomen van Attribute)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
IsDefaultAttribute()

Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse.

(Overgenomen van Attribute)
Match(Object)

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

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

Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's.

(Overgenomen van Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen.

(Overgenomen van Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1).

(Overgenomen van Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven.

(Overgenomen van Attribute)

Van toepassing op

Zie ook