Sdílet prostřednictvím


WebPartTransformer Třída

Definice

Poskytuje základní implementaci pro třídy transformátorů pro převod dat mezi dvěma nekompatibilními spojovacími body.

public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
Dědičnost
WebPartTransformer
Odvozené

Příklady

Následující příklad kódu ukazuje, jak vytvořit přizpůsobený transformátor, který je odvozen z WebPartTransformer třídy. Transformátor s názvem RowToStringTransformerumožňuje připojení Webové části poskytovatele a Webové části spotřebitele s nekompatibilními spojovacími body. Poskytovatel zobrazí data typu IWebPartRow, ale příjemce přijímá pouze data typu String. Třída RowToStringTransformer provede potřebný převod.

Příklad kódu nezahrnuje implementaci zprostředkovatele nebo příjemce. Musíte vytvořit zprostředkovatele, který implementuje IWebPartRow rozhraní a příjemce, který očekává data prostřednictvím přizpůsobeného rozhraní s názvem IString příkladu.

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

První část příkladu kódu obsahuje kód pro zprostředkovatele a příjemce Webové části ovládací prvky a kód pro transformátor.

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

Druhá část příkladu kódu ukazuje, jak zahrnout transformátor do deklarativní syntaxe objektu WebPartConnection .

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

Přizpůsobený transformátor musí být zadán v <transformers> části souboru Web.config, aby byl k dispozici pro použití na webové stránce. Třetí část příkladu kódu ukazuje, jak přidat přizpůsobený transformátor do souboru 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>  

Příklad kódu obsahuje uživatelský ovládací prvek, který umožňuje změnit režimy zobrazení na Webové části stránce. Zdrojový kód uživatelského ovládacího prvku pochází z jiného tématu. Soubor .ascx pro uživatelský ovládací prvek můžete získat z návodu: Změna režimů zobrazení na Webové části stránce a musí být umístěna ve stejné složce jako stránka .aspx.

Poznámky

Transformátory slouží k překladu dat mezi dvěma ovládacími prvky Webové části s nekompatibilními spojovacími body. Spojovací body nejsou kompatibilní, když poskytují nebo využívají data prostřednictvím různých rozhraní. Například poskytovatel, který implementuje spojovací bod poskytovatele typu IWebPartRow , se nemohl přímo připojit k příjemci, který očekává spojovací bod poskytovatele typu IWebPartTable. Místo toho musí být k propojení dvou ovládacích prvků Webové části použit transformátor.

Transformátor přijímá data typu podporovaného spojovacím bodem zprostředkovatele. Provádí nezbytné interní zpracování pro převod dat na typ podporovaný spojovacím bodem příjemce.

Transformátor může poskytnout uživatelské rozhraní (UI), které uživateli umožňuje konfigurovat transformátor v režimu připojení. Ovládací prvek konfigurace se načte metodou CreateConfigurationControl a zobrazí se v zóně Webové části připojení.

WebPartTransformer je abstraktní třída a musí být rozšířena tak, aby poskytovala přizpůsobené překlady mezi různými typy spojovacích bodů.

Poznámky pro implementátory

Tuto metodu Transform(Object) je nutné přepsat.

Konstruktory

WebPartTransformer()

Inicializuje novou instanci WebPartTransformer třídy.

Metody

CreateConfigurationControl()

Zobrazí ovládací prvek ASP.NET, který konfiguruje transformátor v ConnectionsZone zóně.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
LoadConfigurationState(Object)

Načte stav konfigurace uložený metodou SaveConfigurationState() .

MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
SaveConfigurationState()

Uloží stav konfigurace nastavený uživatelem v ovládacím prvku konfigurace ASP.NET.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
Transform(Object)

Při implementaci poskytuje objekt pro transformaci dat.

Platí pro