WebPartTransformer Klasse

Definition

Stellt eine grundlegende Implementierung für Transformationsklassen bereit, um Daten zwischen zwei nicht kompatiblen 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, benanntRowToStringTransformer, ermöglicht einen Webparts Anbieter und Webparts Verbraucher mit inkompatiblen Verbindungspunkten verbunden werden. Der Anbieter stellt Daten des Typs dar, aber der Verbraucher akzeptiert nur Daten vom Typ IWebPartRowString. Die RowToStringTransformer Klasse führt die erforderliche Konvertierung aus.

Das Codebeispiel enthält keine Implementierung des Anbieters oder Verbrauchers. Sie müssen einen Anbieter erstellen, der die Schnittstelle und einen Verbraucher implementiert, der Daten über eine angepasste Schnittstelle erwartet, die IWebPartRow zum Beispiel verwendet IString werden soll.

// 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 den Anbieter und verbraucher Webparts Steuerelemente 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 eines WebPartConnection Objekts einbezogen 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 Abschnitt der Web.config Datei angegeben werden, die für die Verwendung auf <transformers> einer Webseite verfügbar sein soll. Der dritte Abschnitt des Codebeispiels zeigt, wie der angepasste Transformator der 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 aus exemplarischer Vorgehensweise abrufen: Ändern von Anzeigemodi auf einer Webparts Seite und muss in demselben Ordner wie die ASPX-Seite platziert werden.

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 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. Die interne Verarbeitung ist erforderlich, um diese Daten in den Vom Verbraucherverbindungspunkt unterstützten Typ zu konvertieren.

Ein Transformator kann eine Benutzeroberfläche (Benutzeroberfläche) bereitstellen, mit der der Benutzer den Transformator beim Verbinden konfigurieren kann. Das Konfigurationssteuerelement wird über die CreateConfigurationControl Methode abgerufen und wird in einer Webparts Verbindungszone angezeigt.

WebPartTransformer ist eine abstrakte Klasse und muss erweitert werden, um angepasste Übersetzungen zwischen verschiedenen Verbindungspunkten bereitzustellen.

Hinweise für Ausführende

Sie müssen die Transform(Object) Methode außer Kraft setzen.

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: