ConnectionProviderAttribute 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 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
- 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) |