WebPartTransformer Klas

Definitie

Biedt eenvoudige implementatie voor transformatieklassen voor het converteren van gegevens tussen twee incompatibele verbindingspunten.

public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
Overname
WebPartTransformer
Afgeleid

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u een aangepaste transformator maakt die is afgeleid van de WebPartTransformer klasse. Met de transformator, genaamd RowToStringTransformer, kunnen een webonderdelenprovider en webonderdelengebruiker met incompatibele verbindingspunten worden verbonden. De provider presenteert gegevens van het type IWebPartRow, maar de consument accepteert alleen gegevens van het type String. De RowToStringTransformer klasse voert de benodigde conversie uit.

Het codevoorbeeld bevat geen implementatie van de provider of consument. U moet een provider maken die de IWebPartRow interface implementeert en een consument die gegevens verwacht via een aangepaste interface die IString voor het voorbeeld werkt.

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

De eerste sectie van het codevoorbeeld bevat code voor de besturingselementen voor provider- en consumentenwebonderdelen en de code voor de 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

In de tweede sectie van het codevoorbeeld ziet u hoe u de transformator in de declaratieve syntaxis voor een WebPartConnection object kunt opnemen.

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

Er moet een aangepaste transformator worden opgegeven in de <transformers> sectie van het Web.config-bestand dat beschikbaar moet zijn voor gebruik op een webpagina. In het derde gedeelte van het codevoorbeeld ziet u hoe u de aangepaste transformator toevoegt aan het Web.config-bestand.

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

Het codevoorbeeld bevat een gebruikersbeheer waarmee u weergavemodi op een pagina met webonderdelen kunt wijzigen. De broncode voor het gebruikersbeheer komt uit een ander onderwerp. U kunt het .ascx-bestand voor het gebruikersbeheer verkrijgen via Walkthrough: Weergavemodi wijzigen op een pagina met webonderdelen en moet worden geplaatst in dezelfde map als de .aspx pagina.

Opmerkingen

Transformatoren worden gebruikt om gegevens te vertalen tussen twee besturingselementen voor webonderdelen met incompatibele verbindingspunten. Verbindingspunten zijn niet compatibel wanneer ze gegevens leveren of gebruiken via verschillende interfaces. Een provider die bijvoorbeeld een verbindingspunt van IWebPartRow een provider implementeert, kan niet rechtstreeks verbinding maken met een consument die een providerverbindingspunt van het type IWebPartTableverwacht. In plaats daarvan moet een transformator worden gebruikt om de twee besturingselementen voor webonderdelen te verbinden.

De transformator accepteert gegevens van het type dat wordt ondersteund door het verbindingspunt van de provider. Het voert de noodzakelijke interne verwerking uit om die gegevens te converteren naar het type dat wordt ondersteund door het verbindingspunt van de consument.

Een transformator kan een gebruikersinterface (UI) bieden waarmee de gebruiker de transformator kan configureren in de verbindingsmodus. Het configuratiebeheer wordt opgehaald via de CreateConfigurationControl methode en wordt weergegeven in een zone met webonderdelenverbindingen.

WebPartTransformer is een abstracte klasse en moet worden uitgebreid om aangepaste vertalingen te bieden tussen verschillende typen verbindingspunten.

Notities voor uitvoerders

U moet de Transform(Object) methode overschrijven.

Constructors

Name Description
WebPartTransformer()

Initialiseert een nieuw exemplaar van de WebPartTransformer klasse.

Methoden

Name Description
CreateConfigurationControl()

Geeft een ASP.NET besturingselement weer waarmee een transformator wordt geconfigureerd in de zone ConnectionsZone.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
LoadConfigurationState(Object)

Laadt de configuratiestatus die is opgeslagen met de SaveConfigurationState() methode.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
SaveConfigurationState()

Slaat de configuratiestatus op die door de gebruiker is ingesteld in het ASP.NET configuratiebeheer.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
Transform(Object)

Wanneer deze is geïmplementeerd, biedt u een object voor het transformeren van de gegevens.

Van toepassing op