WebPartTransformer 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.
Stellt eine grundlegende Implementierung für Transformatorklassen bereit, um Daten zwischen zwei inkompatiblen Verbindungspunkten zu konvertieren.
public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
- Vererbung
-
WebPartTransformer
- Abgeleitet
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie ein angepasster Transformator erstellt wird, der von der WebPartTransformer Klasse abgeleitet wird. Der Transformator, benannt RowToStringTransformer, ermöglicht es einem Webpartanbieter und Webparts-Consumer mit inkompatiblen Verbindungspunkten, verbunden zu werden. Der Anbieter stellt Daten vom Typ IWebPartRowdar, der Verbraucher akzeptiert jedoch nur Daten vom Typ String. Die RowToStringTransformer Klasse führt die erforderliche Konvertierung aus.
Das Codebeispiel enthält keine Implementierung des Anbieters oder Consumers. Sie müssen einen Anbieter erstellen, der die IWebPartRow Schnittstelle und einen Verbraucher implementiert, der Daten über eine benutzerdefinierte Schnittstelle erwartet, die für das Beispiel geeignet IString ist.
// An interface that the transformer provides to the consumer.
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public interface IString
{
void GetStringValue(StringCallback callback);
}
' An interface that the transformer provides to the consumer.
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Interface IString
Sub GetStringValue(ByVal callback As StringCallback)
End Interface
Der erste Abschnitt des Codebeispiels enthält Code für die Steuerelemente für Anbieter- und Consumerwebparts und den Code für den Transformator.
// A transformer that transforms a row to a string.
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
[WebPartTransformer(typeof(IWebPartRow), typeof(IString))]
public class RowToStringTransformer : WebPartTransformer, IString
{
private IWebPartRow _provider;
private StringCallback _callback;
private void GetRowData(object rowData)
{
PropertyDescriptorCollection props = _provider.Schema;
if (props != null && props.Count > 0 && rowData != null)
{
string returnValue = String.Empty;
foreach (PropertyDescriptor prop in props)
{
if (prop != props[0])
{
returnValue += ", ";
}
returnValue += prop.DisplayName + ": " + prop.GetValue(rowData);
}
_callback(returnValue);
}
else
{
_callback(null);
}
}
public override object Transform(object providerData)
{
_provider = (IWebPartRow)providerData;
return this;
}
void IString.GetStringValue(StringCallback callback)
{
if (callback == null)
{
throw new ArgumentNullException("callback");
}
if (_provider != null)
{
_callback = callback;
_provider.GetRowData(new RowCallback(GetRowData));
}
else
{
callback(null);
}
}
}
' A transformer that transforms a row to a string.
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<WebPartTransformer(GetType(IWebPartRow), GetType(IString))> _
Public Class RowToStringTransformer
Inherits WebPartTransformer
Implements IString
Private _provider As IWebPartRow
Private _callback As StringCallback
Private Sub GetRowData(ByVal rowData As Object)
Dim props As PropertyDescriptorCollection = _provider.Schema
If ((Not (props Is Nothing)) AndAlso (props.Count > 0) _
AndAlso (Not (rowData Is Nothing))) Then
Dim returnValue As String = String.Empty
For Each prop As PropertyDescriptor In props
If Not (prop Is props(0)) Then
returnValue += ", "
End If
returnValue += prop.DisplayName.ToString() + ": " + _
prop.GetValue(rowData).ToString()
Next
_callback(returnValue)
Else
_callback(Nothing)
End If
End Sub
Public Overrides Function Transform(ByVal providerData As Object) As Object
_provider = CType(providerData, IWebPartRow)
Return Me
End Function
Sub GetStringValue(ByVal callback As StringCallback) _
Implements IString.GetStringValue
If (callback Is Nothing) Then
Throw New ArgumentNullException("callback")
End If
If (Not (_provider Is Nothing)) Then
_callback = callback
_provider.GetRowData(New RowCallback(AddressOf GetRowData))
Else
callback(Nothing)
End If
End Sub
End Class
Im zweiten Abschnitt des Codebeispiels wird gezeigt, wie der Transformator in die deklarative Syntax für ein WebPartConnection Objekt eingeschlossen wird.
<%@ Page language="c#" trace="false" debug="true" %>
<%@ register tagprefix="uc1"
tagname="DisplayModeMenuCS"
src="~/displaymodemenucs.ascx" %>
<%@ Register TagPrefix="wp"
NameSpace="Samples.AspNet.CS.Controls" %>
<script runat="server">
</script>
<!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>
<title>Web Parts Transformer Sample Page</title>
</head>
<body>
<form id="Form1" runat="server">
<asp:webpartmanager id="manager" runat="server">
<staticconnections>
<asp:webpartconnection id="conn1" providerid="p1" consumerid="c1">
<wp:rowtostringtransformer />
</asp:webpartconnection>
</staticconnections>
</asp:webpartmanager>
<uc1:displaymodemenucs id="menu1" runat="server" />
<table>
<tr valign="top">
<td>
<asp:webpartzone id="zone1" headertext="zone1" runat="server">
<zonetemplate>
<wp:rowproviderwebpart id="p1" runat="server" />
<wp:stringconsumerwebpart id="c1" runat="server" />
</zonetemplate>
</asp:webpartzone>
</td>
<td>
<asp:connectionszone id="connectionszone1" runat="server" />
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ register tagprefix="uc1"
tagname="DisplayModeMenuVB"
src="~/displaymodemenuvb.ascx" %>
<%@ Register TagPrefix="wp"
NameSpace="Samples.AspNet.VB.Controls" %>
<script runat="server">
</script>
<!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>
<title>Web Parts Transformers Sample Page</title>
</head>
<body>
<form id="Form1" runat="server">
<asp:webpartmanager id="manager" runat="server">
<staticconnections>
<asp:webpartconnection id="conn1" providerid="p1" consumerid="c1">
<wp:rowtostringtransformer />
</asp:webpartconnection>
</staticconnections>
</asp:webpartmanager>
<uc1:displaymodemenuvb id="menu1" runat="server" />
<table>
<tr valign="top">
<td>
<asp:webpartzone id="zone1" headertext="zone1" runat="server">
<zonetemplate>
<wp:rowproviderwebpart id="p1" runat="server" />
<wp:stringconsumerwebpart id="c1" runat="server" />
</zonetemplate>
</asp:webpartzone>
</td>
<td>
<asp:connectionszone id="connectionszone1" runat="server" />
</td>
</tr>
</table>
</form>
</body>
</html>
Ein angepasster Transformator muss im <transformers> Abschnitt der Web.config Datei angegeben werden, damit er in einer Webseite verwendet werden kann. Im dritten Abschnitt des Codebeispiels wird gezeigt, wie Der angepasste Transformator zur Web.config Datei hinzugefügt wird.
<webParts enableExport="true">
<transformers>
<add name="RowToStringTransformer"
type="Samples.AspNet.VB.Controls.RowToStringTransformer" />
</transformers>
</webParts>
<webParts enableExport="true">
<transformers>
<add name="RowToStringTransformer"
type="Samples.AspNet.CS.Controls.RowToStringTransformer" />
</transformers>
</webParts>
Das Codebeispiel enthält ein Benutzersteuerelement, mit dem Sie Anzeigemodi auf einer Webparts-Seite ändern können. Der Quellcode für das Benutzersteuerelement stammt aus einem anderen Thema. Sie können die ASCX-Datei für das Benutzersteuerelement über exemplarische Vorgehensweise abrufen: Ändern von Anzeigemodi auf einer Webpartseite und muss in demselben Ordner wie die .aspx Seite platziert werden.
Hinweise
Transformatoren werden verwendet, um Daten zwischen zwei Webpart-Steuerelementen mit inkompatiblen Verbindungspunkten zu übersetzen. Verbindungspunkte sind nicht kompatibel, wenn sie Daten über verschiedene Schnittstellen bereitstellen oder nutzen. Beispielsweise konnte ein Anbieter, der einen Anbieterverbindungspunkt vom Typ IWebPartRow implementiert, keine direkte Verbindung mit einem Verbraucher herstellen, der einen Anbieterverbindungspunkt vom Typ IWebPartTableerwartet. Stattdessen muss ein Transformator verwendet werden, um die beiden Webparts-Steuerelemente zu verbinden.
Der Transformator akzeptiert Daten des Typs, der vom Anbieterverbindungspunkt unterstützt wird. Sie führt die erforderliche interne Verarbeitung aus, um diese Daten in den typ zu konvertieren, der vom Consumerverbindungspunkt unterstützt wird.
Ein Transformator kann eine Benutzeroberfläche (Ui) bereitstellen, mit der der Benutzer den Transformator im Verbindungsmodus konfigurieren kann. Das Konfigurationssteuerelement wird über die CreateConfigurationControl Methode abgerufen und in einer Webpart-Verbindungszone angezeigt.
WebPartTransformer ist eine abstrakte Klasse und muss erweitert werden, um benutzerdefinierte Übersetzungen zwischen verschiedenen Verbindungspunktentypen bereitzustellen.
Hinweise für Ausführende
Sie müssen die Transform(Object) Methode überschreiben.
Konstruktoren
| Name | Beschreibung |
|---|---|
| WebPartTransformer() |
Initialisiert eine neue Instanz der WebPartTransformer-Klasse. |
Methoden
| Name | Beschreibung |
|---|---|
| CreateConfigurationControl() |
Zeigt ein ASP.NET-Steuerelement an, das einen Transformator in der zone ConnectionsZone konfiguriert. |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| LoadConfigurationState(Object) |
Lädt den mit der Methode gespeicherten SaveConfigurationState() Konfigurationsstatus. |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| SaveConfigurationState() |
Speichert den vom Benutzer festgelegten Konfigurationsstatus im ASP.NET Konfigurationssteuerelement. |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
| Transform(Object) |
Wenn sie implementiert wird, wird ein Objekt zum Transformieren der Daten bereitgestellt. |