ConnectionConsumerAttribute Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- 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) |