WebPartTransformer Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce implementazione di base per consentire alle classi di trasformazione di convertire i dati tra due punti di connessione incompatibili.
public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
- Ereditarietà
-
WebPartTransformer
- Derivato
Esempio
Nell'esempio di codice seguente viene illustrato come creare un trasformatore personalizzato che deriva dalla WebPartTransformer classe . Il trasformatore, denominato RowToStringTransformer
, consente la connessione di un provider di Web part e Web part consumer con punti di connessione incompatibili. Il provider presenta i dati di tipo IWebPartRow, ma il consumer accetta solo i dati di tipo String. La RowToStringTransformer
classe esegue la conversione necessaria.
L'esempio di codice non include un'implementazione del provider o del consumer. È necessario creare un provider che implementa l'interfaccia IWebPartRow e un consumer che prevede il funzionamento dei dati tramite un'interfaccia personalizzata denominata IString
per il funzionamento dell'esempio.
// 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 prima sezione dell'esempio di codice contiene il codice per i controlli provider e consumer Web part e il codice per il trasformatore.
// 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 seconda sezione dell'esempio di codice illustra come includere il trasformatore all'interno della sintassi dichiarativa per un WebPartConnection oggetto .
<%@ 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>
È necessario specificare un trasformatore personalizzato nella <transformers>
sezione del file di Web.config che sia disponibile per l'uso in una pagina Web. La terza sezione dell'esempio di codice mostra come aggiungere il trasformatore personalizzato al file di 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'esempio di codice include un controllo utente che consente di modificare le modalità di visualizzazione in una pagina di Web part. Il codice sorgente per il controllo utente proviene da un altro argomento. È possibile ottenere il file con estensione ascx per il controllo utente da Procedura dettagliata: Modifica delle modalità di visualizzazione in una pagina Web part e deve essere inserito nella stessa cartella della pagina aspx.
Commenti
I trasformatori vengono usati per convertire i dati tra due controlli Web part con punti di connessione incompatibili. I punti di connessione non sono compatibili quando forniscono o utilizzano dati tramite interfacce diverse. Ad esempio, un provider che implementa un punto di connessione del provider di tipo IWebPartRow non è riuscito a connettersi direttamente a un consumer che prevede un punto di connessione del provider di tipo IWebPartTable. È invece necessario usare un trasformatore per connettere i due controlli Web part.
Il trasformatore accetta i dati del tipo supportato dal punto di connessione del provider. Esegue l'elaborazione interna necessaria per convertire i dati nel tipo supportato dal punto di connessione consumer.
Un trasformatore può fornire un'interfaccia utente che consente all'utente di configurare il trasformatore in modalità di connessione. Il controllo di configurazione viene recuperato tramite il CreateConfigurationControl metodo e viene visualizzato in una zona di connessioni Web part.
WebPartTransformer è una classe astratta e deve essere estesa per fornire traduzioni personalizzate tra tipi diversi di punti di connessione.
Note per gli implementatori
È necessario eseguire l'override del Transform(Object) metodo .
Costruttori
WebPartTransformer() |
Inizializza una nuova istanza della classe WebPartTransformer. |
Metodi
CreateConfigurationControl() |
Visualizza un controllo ASP.NET tramite cui viene configurato un trasformatore nella zona ConnectionsZone. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
LoadConfigurationState(Object) |
Carica lo stato della configurazione salvato con il metodo SaveConfigurationState(). |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
SaveConfigurationState() |
Salva lo stato della configurazione impostato dall'utente nel controllo configurazione ASP.NET. |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Transform(Object) |
Se implementato, fornisce un oggetto per la trasformazione dei dati. |