Freigeben über


ConnectionConsumerAttribute Klasse

Definition

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

public ref class ConnectionConsumerAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public class ConnectionConsumerAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type ConnectionConsumerAttribute = class
    inherit Attribute
Public Class ConnectionConsumerAttribute
Inherits Attribute
Vererbung
ConnectionConsumerAttribute
Attribute

Beispiele

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

[ConnectionConsumer("Row")]
public void SetConnectionInterface(IWebPartRow provider) 
{
    _provider = provider;
}
    <ConnectionConsumer("Row")> _
    Public Sub SetConnectionInterface(ByVal provider As IWebPartRow)
        _provider = provider

    End Sub
End Class

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

Das erste Beispiel zeigt eine Klasse, die als Anbieter 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 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. Beachten Sie, dass eine Methode als Rückrufmethode mit dem ConnectionConsumerAttribute 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 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 ASP.NET Seite, 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 Webpartsverbindung 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 Verbindungen der WebPartConnection Klasse und webparts.

Das Consumersteuerelement in einer Verbindung kann ein Steuerelement oder ein WebPart beliebiger Typ von Server- oder Benutzersteuerelementen 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, vom Anbieter eine Schnittstelleninstanz zu empfangen, die Daten enthält. Um die Methode festzulegen, die als Rückrufmethode in einem Consumer dient, müssen Sie der -Methode ein ConnectionConsumerAttribute Metadatenelement hinzufügen (das Element basiert auf der ConnectionConsumerAttribute -Klasse).

Neben der Festlegung der Rückrufmethode in einem Consumer können Sie mit dem ConnectionConsumerAttribute Objekt auch bestimmte Details zum Verbindungspunkt eines Consumers angeben. Ein Consumerverbindungspunkt ist eine Instanz der -Klasse, die ConsumerConnectionPoint alle Details zu einem Consumer kapselt, die zum Herstellen einer Verbindung erforderlich sind, einschließlich des Steuerelementtyps des Consumers, ob er eine Verbindung mit mehreren Anbietern gleichzeitig herstellen kann, welcher Schnittstellentyp der Consumer von einem Anbieter erhalten kann, Details zur Rückrufmethode und einen Anzeigenamen, der den Consumerverbindungspunkt in der Benutzeroberfläche darstellt. Jede Webpartverbindung enthält einen Consumerverbindungspunkt, der dem Consumersteuerelement zugeordnet ist.

Wenn Sie das ConnectionConsumerAttribute Metadatenelement der Rückrufmethode in einem Consumer hinzufügen, können Sie es auch verwenden, um die folgenden Details zum Consumerverbindungspunkt anzugeben: einen Anzeigenamen für den Verbindungspunkt (Details finden Sie in der DisplayName Eigenschaft), ob der Consumer eine Verbindung mit mehreren Anbietern gleichzeitig herstellen kann (Details finden Sie in der AllowsMultipleConnections -Eigenschaft). eine ID für den Verbindungspunkt (Details finden Sie in der ID Eigenschaft) und den Typ des Verbindungspunkts, den der Consumer verwendet (ausführliche Informationen finden Sie in der ConnectionPointType -Eigenschaft). Die vier Überladungen des Konstruktors für die ConnectionConsumerAttribute 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 Consumerverbindungspunkt können auch programmgesteuert festgelegt werden. das Festlegen mithilfe des ConnectionConsumerAttribute -Elements ist optional.

Hinweis

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

Konstruktoren

ConnectionConsumerAttribute(String)

Initialisiert eine neue Instanz der ConnectionConsumerAttribute-Klasse und gibt einen Anzeigenamen für den Consumer-Verbindungspunkt an.

ConnectionConsumerAttribute(String, String)

Initialisiert eine neue Instanz der ConnectionConsumerAttribute-Klasse und gibt einen Anzeigenamen und eine ID für den Consumer-Verbindungspunkt an.

ConnectionConsumerAttribute(String, String, Type)

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

ConnectionConsumerAttribute(String, Type)

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

Eigenschaften

AllowsMultipleConnections

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

ConnectionPointType

Ruft den Verbindungspunkttyp des Consumer-Verbindungspunkts ab.

DisplayName

Ruft den angezeigten Namen des Consumer-Verbindungspunkts 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 Consumer-Verbindungspunkts 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