Auf Englisch lesen

Teilen über


WebPartTransformer Klasse

Definition

Stellt eine grundlegende Implementierung für Transformationsklassen bereit, um Daten zwischen zwei nicht kompatiblen Verbindungspunkten zu konvertieren.

C#
public abstract class WebPartTransformer
Vererbung
WebPartTransformer
Abgeleitet

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie ein benutzerdefinierter Transformator erstellt wird, der von der WebPartTransformer -Klasse abgeleitet wird. Der Transformator mit dem Namen RowToStringTransformerermöglicht die Verbindung eines Webpartsanbieters und Webparts-Consumers mit inkompatiblen Verbindungspunkten. Der Anbieter stellt Daten vom Typ IWebPartRowvor, aber der Consumer akzeptiert 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 -Schnittstelle implementiert, und einen Consumer, der IWebPartRow Daten über eine benutzerdefinierte Schnittstelle namens IString erwartet, damit das Beispiel funktioniert.

C#
// 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);
}

Der erste Abschnitt des Codebeispiels enthält Code für die Anbieter- und Consumer-Webparts-Steuerelemente und den Code für den Transformator.

C#
// 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);
        }
    }
}

Im zweiten Abschnitt des Codebeispiels wird gezeigt, wie der Transformator in die deklarative Syntax für ein WebPartConnection -Objekt eingeschlossen wird.

ASP.NET (C#)
<%@ 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>

Ein angepasster Transformator muss im Abschnitt der <transformers> Web.config-Datei angegeben werden, damit er für die Verwendung in einer Webseite verfügbar ist. Im dritten Abschnitt des Codebeispiels wird gezeigt, wie der benutzerdefinierte Transformator der Web.config-Datei hinzugefügt wird.

C#
<webParts enableExport="true">  
    <transformers>  
       <add name="RowToStringTransformer"  
          type="Samples.AspNet.CS.Controls.RowToStringTransformer" />  
    </transformers>  
</webParts>  

Das Codebeispiel enthält ein Benutzersteuerelement, mit dem Sie die 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 unter Exemplarische Vorgehensweise: Ändern der Anzeigemodi auf einer Webpartsseite abrufen. Sie muss sich im gleichen Ordner wie die ASPX-Seite befinden.

Hinweise

Transformatoren werden verwendet, um Daten zwischen zwei Webparts-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 Consumer 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. Es führt die erforderliche interne Verarbeitung durch, 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 konfigurieren kann, wenn er sich im Verbindungsmodus befindet. Das Konfigurationssteuerelement wird über die CreateConfigurationControl -Methode abgerufen und in einer Webparts-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

WebPartTransformer()

Initialisiert eine neue Instanz der WebPartTransformer-Klasse.

Methoden

CreateConfigurationControl()

Zeigt ein ASP.NET-Steuerelement an, das in der ConnectionsZone-Zone einen Transformator konfiguriert.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
LoadConfigurationState(Object)

Lädt den mit der SaveConfigurationState()-Methode gespeicherten Konfigurationszustand.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
SaveConfigurationState()

Speichert den vom Benutzer festgelegten Konfigurationszustand im ASP.NET-Konfigurationssteuerelement.

ToString()

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

(Geerbt von Object)
Transform(Object)

Stellt nach dem Implementieren ein Objekt zum Transformieren der Daten bereit.

Gilt für:

Produkt Versionen
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1