WebPartTransformer Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona una implementación básica de las clases de transformador que convierten datos entre dos puntos de conexión incompatibles.
public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
- Herencia
-
WebPartTransformer
- Derivado
Ejemplos
En el ejemplo de código siguiente se muestra cómo crear un transformador personalizado que derive de la WebPartTransformer clase . El transformador, denominado RowToStringTransformer
, permite que un proveedor de elementos web y elementos web consumidor con puntos de conexión incompatibles se conecten. El proveedor presenta datos de tipo IWebPartRow, pero el consumidor solo acepta datos de tipo String. La RowToStringTransformer
clase realiza la conversión necesaria.
El ejemplo de código no incluye una implementación del proveedor o consumidor. Debe crear un proveedor que implemente la IWebPartRow interfaz y un consumidor que espera datos a través de una interfaz personalizada denominada IString
para que funcione el ejemplo.
// 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 primera sección del ejemplo de código contiene código para los controles de proveedor y consumidor elementos web y el código del transformador.
// 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
En la segunda sección del ejemplo de código se muestra cómo incluir el transformador dentro de la sintaxis declarativa de un WebPartConnection objeto .
<%@ 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>
Se debe especificar un transformador personalizado en la <transformers>
sección del archivo Web.config que esté disponible para su uso en una página web. En la tercera sección del ejemplo de código se muestra cómo agregar el transformador personalizado al archivo 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>
El ejemplo de código incluye un control de usuario que permite cambiar los modos de visualización en una página de elementos web. El código fuente del control de usuario procede de otro tema. Puede obtener el archivo .ascx para el control de usuario de Walkthrough: Changing Display Modes on a elementos web Page y debe colocarse en la misma carpeta que la página .aspx.
Comentarios
Los transformadores se usan para traducir datos entre dos controles de elementos web con puntos de conexión incompatibles. Los puntos de conexión son incompatibles cuando proporcionan o consumen datos a través de interfaces diferentes. Por ejemplo, un proveedor que implementa un punto de conexión de proveedor de tipo IWebPartRow no pudo conectarse directamente a un consumidor que esperaba un punto de conexión de proveedor de tipo IWebPartTable. En su lugar, se debe usar un transformador para conectar los dos controles de elementos web.
El transformador acepta datos del tipo admitidos por el punto de conexión del proveedor. Realiza el procesamiento interno necesario para convertir esos datos en el tipo admitido por el punto de conexión del consumidor.
Un transformador puede proporcionar una interfaz de usuario (UI) que permita al usuario configurar el transformador cuando esté en modo de conexión. El control de configuración se recupera a través del CreateConfigurationControl método y se muestra en una zona de conexiones elementos web.
WebPartTransformer es una clase abstracta y debe ampliarse para proporcionar traducciones personalizadas entre diferentes tipos de puntos de conexión.
Notas a los implementadores
Debe invalidar el Transform(Object) método .
Constructores
WebPartTransformer() |
Inicializa una nueva instancia de la clase WebPartTransformer. |
Métodos
CreateConfigurationControl() |
Muestra un control ASP.NET que configura un transformador en la zona ConnectionsZone. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
LoadConfigurationState(Object) |
Carga el estado de configuración guardado con el método SaveConfigurationState(). |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
SaveConfigurationState() |
Guarda el estado de configuración definido por el usuario en el control de configuración de ASP.NET. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
Transform(Object) |
Cuando se implementa, proporciona un objeto para transformar los datos. |