Teilen über


ConnectionProviderAttribute Klasse

Definition

Gibt die Rückrufmethode in einem Serversteuerelement an, das als Anbieter in einer Webparts-Verbindung fungiert und ermöglicht Entwicklern das Angeben von Details zum Anbieterverbindungspunkt.

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
Vererbung
ConnectionProviderAttribute
Attribute

Beispiele

Im folgenden Codebeispiel wird die Verwendung der ConnectionProviderAttribute -Klasse veranschaulicht, indem gezeigt wird, wie das ConnectionProviderAttribute Metadatenelement in einer Rückrufmethode in einem Anbietersteuerelement deklariert wird. Beachten Sie, dass die einfachste Überladung des Konstruktors verwendet wird. es wird nur der displayName Parameterwert angegeben.

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

End Function 'GetConnectionInterface

Die folgenden Codebeispiele veranschaulichen, wie eine einfache, statische Verbindung zwischen zwei Webparts-Steuerelementen mithilfe der WebPartConnection -Klasse erstellt wird. Die Anbieter- und Consumercodedateien sollten im Ordner App_Code unter dem Anwendungsordner abgelegt werden, der die Seite .aspx enthält.

Das erste Beispiel zeigt eine Klasse, die als Anbieter fungiert. Beachten Sie, dass eine Methode als Rückrufmethode mit dem ConnectionProviderAttribute Metadatenelement festgelegt ist.

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

Das zweite Beispiel zeigt eine Klasse, die als Consumer fungiert.

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

Das letzte Beispiel zeigt die Seite ASP.NET, die die beiden Steuerelemente enthält.

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

Hinweise

Eine Webparts-Verbindung besteht aus zwei Serversteuerelementen, die sich in einer WebPartZoneBase Zone befinden und Daten über eine Schnittstelleninstanz freigeben, die von einem Steuerelement an das andere übergeben wird. Das Steuerelement, das die Schnittstelleninstanz bedient, wird als Anbieter bezeichnet, und das Steuerelement, das die Schnittstelleninstanz empfängt und die Daten verarbeitet oder anzeigt, wird als Consumer bezeichnet. Ausführliche Informationen zu Verbindungen finden Sie in der Übersicht über Die WebPartConnection -Klasse und Webparts-Verbindungen.

Das Anbietersteuerelement in einer Verbindung kann ein Steuerelement oder ein WebPart beliebiger Typ von Server- oder Benutzersteuerelement sein, es muss jedoch über eine Methode verfügen, die als Rückrufmethode festgelegt ist. Die Rückrufmethode wird während des Verbindungsvorgangs aufgerufen, und ihr Zweck besteht darin, an den Consumer eine Schnittstelleninstanz zurückzugeben, die Daten enthält. Um die Methode festzulegen, die als Rückrufmethode in einem Anbieter dient, müssen Sie der -Methode ein ConnectionProviderAttribute Metadatenelement hinzufügen (das Element basiert auf der ConnectionProviderAttribute -Klasse).

Zusätzlich zur Angabe der Rückrufmethode in einem Anbieter können Sie mit dem ConnectionProviderAttribute -Objekt auch bestimmte Details zum Verbindungspunkt eines Anbieters angeben. Ein Anbieterverbindungspunkt ist eine Instanz der -Klasse, die ProviderConnectionPoint alle Details zu einem Anbieter kapselt, die zum Herstellen einer Verbindung erforderlich sind, einschließlich des Steuerelementtyps des Anbieters, ob er eine Verbindung mit mehreren Consumern gleichzeitig herstellen kann, welche Art von Schnittstelle der Anbieter für Consumer bereitstellt, Details zur Rückrufmethode und einen Anzeigenamen, der den Anbieterverbindungspunkt auf der Benutzeroberfläche (UI) darstellt. Jede Webparts-Verbindung enthält einen Anbieterverbindungspunkt, der dem Anbietersteuerelement zugeordnet ist.

Wenn Sie das ConnectionProviderAttribute Metadatenelement der Rückrufmethode in einem Anbieter hinzufügen, können Sie es auch verwenden, um die folgenden Details zum Anbieterverbindungspunkt anzugeben: einen Anzeigenamen für den Verbindungspunkt (details finden Sie in der DisplayName -Eigenschaft), ob der Anbieter gleichzeitig eine Verbindung mit mehreren Consumern herstellen kann (ausführliche Informationen finden Sie in der AllowsMultipleConnections -Eigenschaft). eine ID für den Verbindungspunkt (ausführliche Informationen finden Sie in der ID -Eigenschaft) und den Typ des Verbindungspunkts, den der Anbieter verwendet (ausführliche Informationen finden Sie in der ConnectionPointType -Eigenschaft). Die vier Überladungen des Konstruktors für die ConnectionProviderAttribute Klasse verfügen jeweils über Parameter, mit denen Sie Werte für eine oder mehrere dieser Verbindungspunkteigenschaften angeben können, wenn eine neue Instanz der -Klasse erstellt wird. Die meisten Eigenschaften für einen Anbieterverbindungspunkt können auch programmgesteuert festgelegt werden. Das Festlegen mit dem ConnectionProviderAttribute -Element ist optional.

Hinweis

Wenn Sie das ConnectionProviderAttribute Metadatenelement zu einer Rückrufmethode in einem Anbieter hinzufügen, müssen Sie immer nur den displayName Parameter angeben (ausführliche Informationen finden Sie in der ConnectionProviderAttribute(String) Konstruktorüberladung). Der Wert dieses Parameters wird der DisplayName -Eigenschaft zugewiesen. Wenn ein Benutzer die (vom ConnectionsZone Steuerelement erstellte) Verbindungsbenutzeroberfläche öffnet, stellt der Anzeigename den Anbieterverbindungspunkt auf der Benutzeroberfläche dar. Wenn Sie mehrere Rückrufmethoden in einem Anbietersteuerelement festlegen, stehen Ihnen mehrere mögliche Verbindungspunkte zur Auswahl. Wenn Sie das ConnectionProviderAttribute Metadatenelement zu jeder Rückrufmethode hinzufügen, sollten Sie auch einen Wert für den id Parameter angeben, sodass jeder Anbieterverbindungspunkt über einen bekannten, eindeutigen Bezeichner verfügt.

Konstruktoren

ConnectionProviderAttribute(String)

Initialisiert eine neue Instanz der ConnectionProviderAttribute-Klasse und gibt einen Anzeigenamen für den Anbieterverbindungspunkt an.

ConnectionProviderAttribute(String, String)

Initialisiert eine neue Instanz der ConnectionProviderAttribute-Klasse und gibt einen Anzeigenamen und eine ID für den Anbieterverbindungspunkt an.

ConnectionProviderAttribute(String, String, Type)

Initialisiert eine neue Instanz der ConnectionProviderAttribute-Klasse und gibt einen Anzeigenamen, eine ID und einen bestimmten Typ von Verbindungspunktobjekt zur Verwendung für den Anbieterverbindungspunkt an.

ConnectionProviderAttribute(String, Type)

Initialisiert eine neue Instanz der ConnectionProviderAttribute-Klasse und gibt einen Anzeigenamen und einen bestimmten Typ eines Verbindungspunktobjekts für den Anbieterverbindungspunkt an.

Eigenschaften

AllowsMultipleConnections

Ruft einen Wert ab, der angibt, ob der Verbindungspunkt mehrere Verbindungen zulässt, oder legt diesen fest.

ConnectionPointType

Ruft den Typ des Verbindungspunkts ab, der einem Anbietersteuerelement zugeordnet ist.

DisplayName

Ruft den angezeigten Namen des Anbieterverbindungspunkts ab.

DisplayNameValue

Ruft die Zeichenfolge ab, die als Wert der DisplayName-Eigenschaft in Lokalisierungsszenarios verwendet wird, oder legt diese fest.

ID

Ruft eine Zeichenfolge ab, die die eindeutige Identität des Anbieterverbindungspunkt-Objekts darstellt.

TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.

(Geerbt von Attribute)

Methoden

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diese Instanz zurück.

(Geerbt von Attribute)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

(Geerbt von Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).

(Geerbt von Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.

(Geerbt von Attribute)

Gilt für:

Weitere Informationen