WebPartTransformer Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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. |