WebPartTransformer Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje základní implementaci pro třídy transformátorů pro převod dat mezi dvěma nekompatibilními spojovacími body.
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 přizpůsobený transformátor, který je odvozen z WebPartTransformer třídy. Transformátor s názvem RowToStringTransformer
umožňuje připojení Webové části poskytovatele a Webové části spotřebitele s nekompatibilními spojovacími body. Poskytovatel zobrazí data typu IWebPartRow, ale příjemce přijímá pouze data typu String. Třída RowToStringTransformer
provede potřebný převod.
Příklad kódu nezahrnuje implementaci zprostředkovatele nebo příjemce. 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
příkladu.
// 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 zprostředkovatele a příjemce Webové části ovládací prvky a kód pro transformátor.
// 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 transformátor do deklarativní syntaxe objektu WebPartConnection .
<%@ 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>
Přizpůsobený transformátor musí být zadán v <transformers>
části souboru Web.config, aby byl k dispozici pro použití na webové stránce. Třetí část příkladu kódu ukazuje, jak přidat přizpůsobený transformátor do souboru 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>
Příklad kódu obsahuje uživatelský ovládací prvek, který umožňuje změnit režimy zobrazení na Webové části stránce. Zdrojový kód uživatelského ovládacího prvku pochází z jiného tématu. Soubor .ascx pro uživatelský ovládací prvek můžete získat z návodu: Změna režimů zobrazení na Webové části stránce a musí být umístěna ve stejné složce jako stránka .aspx.
Poznámky
Transformátory slouží k překladu dat mezi dvěma ovládacími prvky Webové části s nekompatibilními spojovacími body. Spojovací body nejsou kompatibilní, když poskytují nebo využívají data prostřednictvím různých rozhraní. Například poskytovatel, který implementuje spojovací bod poskytovatele typu IWebPartRow , se nemohl přímo připojit k příjemci, který očekává spojovací bod poskytovatele typu IWebPartTable. Místo toho musí být k propojení dvou ovládacích prvků Webové části použit transformátor.
Transformátor přijímá data typu podporovaného spojovacím bodem zprostředkovatele. Provádí nezbytné interní zpracování pro převod dat na typ podporovaný spojovacím bodem příjemce.
Transformátor může poskytnout uživatelské rozhraní (UI), které uživateli umožňuje konfigurovat transformátor v režimu připojení. Ovládací prvek konfigurace se načte metodou CreateConfigurationControl a zobrazí se v zóně Webové části připojení.
WebPartTransformer je abstraktní třída a musí být rozšířena tak, aby poskytovala přizpůsobené překlady mezi různými typy spojovacích bodů.
Poznámky pro implementátory
Tuto metodu Transform(Object) je nutné přepsat.
Konstruktory
WebPartTransformer() |
Inicializuje novou instanci WebPartTransformer třídy. |
Metody
CreateConfigurationControl() |
Zobrazí ovládací prvek ASP.NET, který konfiguruje transformátor v ConnectionsZone zóně. |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
GetType() |
Type Získá aktuální instanci. (Zděděno od Object) |
LoadConfigurationState(Object) |
Načte stav konfigurace uložený metodou SaveConfigurationState() . |
MemberwiseClone() |
Vytvoří použádnou kopii aktuálního souboru Object. (Zděděno od Object) |
SaveConfigurationState() |
Uloží stav konfigurace nastavený uživatelem v ovládacím prvku konfigurace ASP.NET. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Transform(Object) |
Při implementaci poskytuje objekt pro transformaci dat. |