Partager via


WebPartTransformer Classe

Définition

Fournit l'implémentation de base pour les classes de transformateur pour convertir des données entre deux points de connexion incompatibles.

public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
Héritage
WebPartTransformer
Dérivé

Exemples

L’exemple de code suivant montre comment créer un transformateur personnalisé qui dérive de la WebPartTransformer classe. Le transformateur, nommé RowToStringTransformer, permet à un fournisseur composants WebPart et composants WebPart consommateur avec des points de connexion incompatibles à connecter. Le fournisseur présente des données de type IWebPartRow, mais le consommateur accepte uniquement les données de type String. La RowToStringTransformer classe effectue la conversion nécessaire.

L’exemple de code n’inclut pas d’implémentation du fournisseur ou du consommateur. Vous devez créer un fournisseur qui implémente l’interface IWebPartRow et un consommateur qui attend des données via une interface personnalisée nommée IString pour que l’exemple fonctionne.

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

La première section de l’exemple de code contient du code pour les contrôles composants WebPart fournisseur et consommateur, ainsi que le code du transformateur.

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

La deuxième section de l’exemple de code montre comment inclure le transformateur dans la syntaxe déclarative d’un WebPartConnection objet.

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

Un transformateur personnalisé doit être spécifié dans la <transformers> section du fichier Web.config à utiliser dans une page Web. La troisième section de l’exemple de code montre comment ajouter le transformateur personnalisé au fichier 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>  

L’exemple de code inclut un contrôle utilisateur qui vous permet de modifier les modes d’affichage sur une page composants WebPart. Le code source du contrôle utilisateur provient d’une autre rubrique. Vous pouvez obtenir le fichier .ascx pour le contrôle utilisateur à partir de La procédure pas à pas : modification des modes d’affichage sur une page composants WebPart, et il doit être placé dans le même dossier que la page .aspx.

Remarques

Les transformateurs sont utilisés pour traduire des données entre deux contrôles composants WebPart avec des points de connexion incompatibles. Les points de connexion sont incompatibles lorsqu’ils fournissent ou consomment des données via différentes interfaces. Par exemple, un fournisseur implémentant un point de connexion fournisseur de type IWebPartRow n’a pas pu se connecter directement à un consommateur qui attend un point de connexion fournisseur de type IWebPartTable. Au lieu de cela, un transformateur doit être utilisé pour connecter les deux contrôles composants WebPart.

Le transformateur accepte les données du type pris en charge par le point de connexion du fournisseur. Il effectue le traitement interne nécessaire pour convertir ces données en type pris en charge par le point de connexion consommateur.

Un transformateur peut fournir une interface utilisateur qui permet à l’utilisateur de configurer le transformateur en mode connexion. Le contrôle de configuration est récupéré via la CreateConfigurationControl méthode et s’affiche dans une zone de connexions composants WebPart.

WebPartTransformer est une classe abstraite et doit être étendue pour fournir des traductions personnalisées entre différents types de points de connexion.

Notes pour les responsables de l’implémentation

Vous devez remplacer la Transform(Object) méthode.

Constructeurs

WebPartTransformer()

Initialise une nouvelle instance de la classe WebPartTransformer.

Méthodes

CreateConfigurationControl()

Affiche un contrôle ASP.NET qui configure un transformateur dans la zone ConnectionsZone.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
LoadConfigurationState(Object)

Charge l'état de configuration enregistré avec la méthode SaveConfigurationState().

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
SaveConfigurationState()

Enregistre l'état de configuration défini par l'utilisateur dans le contrôle de configuration ASP.NET.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)
Transform(Object)

Une fois implémentée, fournit un objet pour transformer les données.

S’applique à