WebPartTransformer Klass

Definition

Tillhandahåller grundläggande implementering för transformeringsklasser för att konvertera data mellan två inkompatibla anslutningspunkter.

public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
Arv
WebPartTransformer
Härledda

Exempel

Följande kodexempel visar hur du skapar en anpassad transformerare som härleds från WebPartTransformer klassen. Transformatorn, med namnet RowToStringTransformer, gör det möjligt för en webbdelsleverantör och webbdelskonsument med inkompatibla anslutningspunkter att anslutas. Providern presenterar data av typen IWebPartRow, men konsumenten accepterar endast data av typen String. Klassen RowToStringTransformer utför den nödvändiga konverteringen.

Kodexemplet innehåller inte någon implementering av providern eller konsumenten. Du måste skapa en provider som implementerar IWebPartRow gränssnittet och en konsument som förväntar sig att data via ett anpassat gränssnitt med namnet IString för exemplet ska fungera.

// 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

Det första avsnittet i kodexemplet innehåller kod för kontrollerna provider och konsumentwebbdelar och koden för transformatorn.

// 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

Det andra avsnittet i kodexemplet visar hur du tar med transformatorn i deklarativ syntax för ett WebPartConnection objekt.

<%@ 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>

En anpassad transformerare måste anges i <transformers> avsnittet i Web.config-filen för att kunna användas på en webbsida. Det tredje avsnittet i kodexemplet visar hur du lägger till den anpassade transformatorn i filen Web.config.

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

Kodexemplet innehåller en användarkontroll som gör att du kan ändra visningslägen på en webbdelssida. Källkoden för användarkontrollen kommer från ett annat ämne. Du kan hämta .ascx-filen för användarkontrollen från Genomgång: Ändra visningslägen på en webbsida och den måste placeras i samma mapp som den .aspx sidan.

Kommentarer

Transformatorer används för att översätta data mellan två webbdelskontroller med inkompatibla anslutningspunkter. Anslutningspunkter är inkompatibla när de tillhandahåller eller använder data via olika gränssnitt. En provider som implementerar en leverantörsanslutningspunkt av typen IWebPartRow kunde till exempel inte ansluta direkt till en konsument som förväntar sig en leverantörsanslutningspunkt av typen IWebPartTable. I stället måste en transformator användas för att ansluta de två webbdelskontrollerna.

Transformatorn accepterar data av den typ som stöds av provideranslutningspunkten. Den utför den interna bearbetning som krävs för att konvertera dessa data till den typ som stöds av konsumentanslutningspunkten.

En transformerare kan tillhandahålla ett användargränssnitt (UI) som gör att användaren kan konfigurera transformatorn när den är i anslutningsläge. Konfigurationskontrollen hämtas via CreateConfigurationControl metoden och visas i en anslutningszon för webbdelar.

WebPartTransformer är en abstrakt klass och måste utökas för att tillhandahålla anpassade översättningar mellan olika typer av anslutningspunkter.

Anteckningar till implementerare

Du måste åsidosätta Transform(Object) metoden.

Konstruktorer

Name Description
WebPartTransformer()

Initierar en ny instans av WebPartTransformer klassen.

Metoder

Name Description
CreateConfigurationControl()

Visar en ASP.NET kontroll som konfigurerar en transformator i zonen ConnectionsZone.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
LoadConfigurationState(Object)

Läser in konfigurationstillståndet som sparats SaveConfigurationState() med -metoden.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
SaveConfigurationState()

Sparar konfigurationstillståndet som angetts av användaren i ASP.NET konfigurationskontroll.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
Transform(Object)

När det implementeras tillhandahåller ett objekt för att transformera data.

Gäller för