WebPartTransformer Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt eenvoudige implementatie voor transformatieklassen voor het converteren van gegevens tussen twee incompatibele verbindingspunten.
public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
- Overname
-
WebPartTransformer
- Afgeleid
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u een aangepaste transformator maakt die is afgeleid van de WebPartTransformer klasse. Met de transformator, genaamd RowToStringTransformer, kunnen een webonderdelenprovider en webonderdelengebruiker met incompatibele verbindingspunten worden verbonden. De provider presenteert gegevens van het type IWebPartRow, maar de consument accepteert alleen gegevens van het type String. De RowToStringTransformer klasse voert de benodigde conversie uit.
Het codevoorbeeld bevat geen implementatie van de provider of consument. U moet een provider maken die de IWebPartRow interface implementeert en een consument die gegevens verwacht via een aangepaste interface die IString voor het voorbeeld werkt.
// 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
De eerste sectie van het codevoorbeeld bevat code voor de besturingselementen voor provider- en consumentenwebonderdelen en de code voor de transformator.
// 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
In de tweede sectie van het codevoorbeeld ziet u hoe u de transformator in de declaratieve syntaxis voor een WebPartConnection object kunt opnemen.
<%@ 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>
Er moet een aangepaste transformator worden opgegeven in de <transformers> sectie van het Web.config-bestand dat beschikbaar moet zijn voor gebruik op een webpagina. In het derde gedeelte van het codevoorbeeld ziet u hoe u de aangepaste transformator toevoegt aan het Web.config-bestand.
<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>
Het codevoorbeeld bevat een gebruikersbeheer waarmee u weergavemodi op een pagina met webonderdelen kunt wijzigen. De broncode voor het gebruikersbeheer komt uit een ander onderwerp. U kunt het .ascx-bestand voor het gebruikersbeheer verkrijgen via Walkthrough: Weergavemodi wijzigen op een pagina met webonderdelen en moet worden geplaatst in dezelfde map als de .aspx pagina.
Opmerkingen
Transformatoren worden gebruikt om gegevens te vertalen tussen twee besturingselementen voor webonderdelen met incompatibele verbindingspunten. Verbindingspunten zijn niet compatibel wanneer ze gegevens leveren of gebruiken via verschillende interfaces. Een provider die bijvoorbeeld een verbindingspunt van IWebPartRow een provider implementeert, kan niet rechtstreeks verbinding maken met een consument die een providerverbindingspunt van het type IWebPartTableverwacht. In plaats daarvan moet een transformator worden gebruikt om de twee besturingselementen voor webonderdelen te verbinden.
De transformator accepteert gegevens van het type dat wordt ondersteund door het verbindingspunt van de provider. Het voert de noodzakelijke interne verwerking uit om die gegevens te converteren naar het type dat wordt ondersteund door het verbindingspunt van de consument.
Een transformator kan een gebruikersinterface (UI) bieden waarmee de gebruiker de transformator kan configureren in de verbindingsmodus. Het configuratiebeheer wordt opgehaald via de CreateConfigurationControl methode en wordt weergegeven in een zone met webonderdelenverbindingen.
WebPartTransformer is een abstracte klasse en moet worden uitgebreid om aangepaste vertalingen te bieden tussen verschillende typen verbindingspunten.
Notities voor uitvoerders
U moet de Transform(Object) methode overschrijven.
Constructors
| Name | Description |
|---|---|
| WebPartTransformer() |
Initialiseert een nieuw exemplaar van de WebPartTransformer klasse. |
Methoden
| Name | Description |
|---|---|
| CreateConfigurationControl() |
Geeft een ASP.NET besturingselement weer waarmee een transformator wordt geconfigureerd in de zone ConnectionsZone. |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| LoadConfigurationState(Object) |
Laadt de configuratiestatus die is opgeslagen met de SaveConfigurationState() methode. |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| SaveConfigurationState() |
Slaat de configuratiestatus op die door de gebruiker is ingesteld in het ASP.NET configuratiebeheer. |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
| Transform(Object) |
Wanneer deze is geïmplementeerd, biedt u een object voor het transformeren van de gegevens. |