WebPartTransformer Třída

Definice

Poskytuje základní implementaci pro třídy Transformer pro převod dat mezi dvěma nekompatibilními spojovacími body.Provides basic implementation for transformer classes to convert data between two incompatible connection points.

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 vlastní transformátor, který je odvozen z WebPartTransformer třídy.The following code example demonstrates how to create a customized transformer that derives from the WebPartTransformer class. Transformátor s názvem RowToStringTransformer umožňuje poskytovateli webové části a webové části příjemce s nekompatibilními spojovacími body, aby bylo možné je připojit.The transformer, named RowToStringTransformer, allows for a Web Parts provider and Web Parts consumer with incompatible connection points to be connected. Zprostředkovatel prezentuje data typu IWebPartRow , ale příjemce přijímá pouze data typu String .The provider presents data of type IWebPartRow, but the consumer accepts only data of type String. RowToStringTransformerTřída provádí potřebný převod.The RowToStringTransformer class performs the necessary conversion.

Příklad kódu nezahrnuje implementaci zprostředkovatele nebo příjemce.The code example does not include an implementation of the provider or consumer. 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 aby mohl příklad fungovat.You must create a provider that implements the IWebPartRow interface and a consumer that expects data through a customized interface named IString for the example to work.

// 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 poskytovatele a příjemce Webové části ovládací prvky a kód pro transformátor.The first section of the code example contains code for the provider and consumer Web Parts controls, and the code for the transformer.

// 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 transformaci do deklarativní syntaxe pro WebPartConnection objekt.The second section of the code example shows how to include the transformer within the declarative syntax for a WebPartConnection object.

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

V <transformers> části souboru Web.config, který bude k dispozici pro použití na webové stránce, je nutné zadat vlastní transformátor.A customized transformer must be specified in the <transformers> section of the Web.config file to be available for use in a Web page. Třetí část příkladu kódu ukazuje, jak přidat přizpůsobený transformátor do souboru Web.config.The third section of the code example shows how to add the customized transformer to the Web.config file.

<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 stránce Webové části.The code example includes a user control that enables you to change display modes on a Web Parts page. Zdrojový kód uživatelského ovládacího prvku pochází z jiného tématu.The source code for the user control comes from another topic. Soubor. ascx pro uživatelský ovládací prvek můžete získat z návodu: Změna režimů zobrazení na stránce webové částia musí být umístěn ve stejné složce jako stránka. aspx.You can obtain the .ascx file for the user control from Walkthrough: Changing Display Modes on a Web Parts Page, and it must be placed in the same folder as the .aspx page.

Poznámky

Transformátory slouží k převodu dat mezi dvěma ovládacími prvky Webové části s nekompatibilními spojovacími body.Transformers are used to translate data between two Web Parts controls with incompatible connection points. Spojovací body jsou nekompatibilní, pokud poskytují nebo zpracovávají data prostřednictvím různých rozhraní.Connection points are incompatible when they provide or consume data through different interfaces. Například zprostředkovatel implementující bod připojení zprostředkovatele typu se IWebPartRow nemůže přímo připojit ke spotřebiteli, který očekává bod připojení zprostředkovatele typu IWebPartTable .For example, a provider implementing a provider connection point of type IWebPartRow could not directly connect to a consumer expecting a provider connection point of type IWebPartTable. Místo toho je nutné použít transformátor k propojení dvou ovládacích prvků Webové části.Instead, a transformer must be used to connect the two Web Parts controls.

Transformátor přijímá data typu podporovaného přípojným bodem zprostředkovatele.The transformer accepts data of the type supported by the provider connection point. Provádí nezbytné interní zpracování pro převod těchto dat do typu podporovaného přípojným bodem spotřebitele.It does the necessary internal processing to convert that data into the type supported by the consumer connection point.

Transformátor může poskytnout uživatelské rozhraní (UI), které umožňuje uživateli konfigurovat transformaci v režimu připojení.A transformer can provide a user interface (UI) that allows the user to configure the transformer when in the connect mode. Ovládací prvek konfigurace se načte prostřednictvím CreateConfigurationControl metody a zobrazí se v zóně připojení webové části.The configuration control is retrieved through the CreateConfigurationControl method and is displayed in a Web Parts connections zone.

WebPartTransformer je abstraktní třída a je nutné ji rozšířit, aby poskytovala vlastní překlady mezi různými typy přípojných bodů.WebPartTransformer is an abstract class and must be extended to provide customized translations between different types of connection points.

Poznámky pro implementátory

Musíte přepsat Transform(Object) metodu.You must override the Transform(Object) method.

Konstruktory

WebPartTransformer()

Inicializuje novou instanci WebPartTransformer třídy.Initializes a new instance of the WebPartTransformer class.

Metody

CreateConfigurationControl()

Zobrazí ovládací prvek ASP.NET, který konfiguruje transformátor v ConnectionsZone zóně.Displays an ASP.NET control that configures a transformer in the ConnectionsZone zone.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.Determines whether the specified object is equal to the current object.

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

Slouží jako výchozí funkce hash.Serves as the default hash function.

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

Získá Type aktuální instanci.Gets the Type of the current instance.

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

Načte stav konfigurace uložený pomocí SaveConfigurationState() metody.Loads the configuration state saved with the SaveConfigurationState() method.

MemberwiseClone()

Vytvoří kopii aktuálního seznamu Object .Creates a shallow copy of the current Object.

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

Uloží stav konfigurace nastavený uživatelem v ovládacím prvku konfigurace ASP.NET.Saves the configuration state set by the user in the ASP.NET configuration control.

ToString()

Vrátí řetězec, který představuje aktuální objekt.Returns a string that represents the current object.

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

Při implementaci poskytuje objekt pro transformaci dat.When implemented, provides an object for transforming the data.

Platí pro