WebPartTransformer Klasa

Definicja

Zapewnia podstawową implementację dla klas przekształcania w celu konwertowania danych między dwoma niezgodnymi punktami połączenia.

public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
Dziedziczenie
WebPartTransformer
Pochodne

Przykłady

W poniższym przykładzie kodu pokazano, jak utworzyć dostosowany transformator pochodzący z WebPartTransformer klasy . Transformator o nazwie RowToStringTransformerumożliwia dostawcy składniki Web Part i konsumentowi składniki Web Part z niezgodnymi punktami połączenia. Dostawca przedstawia dane typu IWebPartRow, ale odbiorca akceptuje tylko dane typu String. Klasa RowToStringTransformer wykonuje niezbędną konwersję.

Przykładowy kod nie zawiera implementacji dostawcy ani konsumenta. Należy utworzyć dostawcę, który implementuje IWebPartRow interfejs i użytkownika, który oczekuje danych za pośrednictwem dostosowanego interfejsu o nazwie IString przykładu.

// 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

Pierwsza sekcja przykładu kodu zawiera kod dla kontrolek dostawcy i odbiorcy składniki Web Part oraz kod przekształcania.

// 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

W drugiej sekcji przykładu kodu pokazano, jak uwzględnić transformator w składni deklaratywnej WebPartConnection dla obiektu.

<%@ 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>

Dostosowany transformator należy określić w <transformers> sekcji pliku Web.config, aby był dostępny do użycia na stronie sieci Web. Trzecia sekcja przykładu kodu pokazuje, jak dodać dostosowany transformator do pliku 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>  

Przykładowy kod zawiera kontrolkę użytkownika, która umożliwia zmianę trybów wyświetlania na stronie składniki Web Part. Kod źródłowy kontrolki użytkownika pochodzi z innego tematu. Plik ascx dla kontrolki użytkownika można uzyskać z przewodnika: zmienianie trybów wyświetlania na stronie składniki Web Part i należy umieścić go w tym samym folderze co strona aspx.

Uwagi

Transformatory służą do translacji danych między dwoma kontrolkami składniki Web Part z niezgodnymi punktami połączenia. Punkty połączenia są niezgodne, gdy udostępniają lub zużywają dane za pośrednictwem różnych interfejsów. Na przykład dostawca implementujący punkt połączenia dostawcy typu IWebPartRow nie może bezpośrednio nawiązać połączenia z klientem, który oczekuje punktu połączenia dostawcy typu IWebPartTable. Zamiast tego należy użyć transformatora do połączenia dwóch kontrolek składniki Web Part.

Transformator akceptuje dane typu obsługiwanego przez punkt połączenia dostawcy. Przetwarzanie wewnętrzne jest niezbędne do przekonwertowania tych danych na typ obsługiwany przez punkt połączenia użytkownika.

Funkcja przekształcania może zapewnić interfejs użytkownika, który umożliwia użytkownikowi skonfigurowanie funkcji przekształcania w trybie łączenia. Kontrolka konfiguracji jest pobierana za pośrednictwem CreateConfigurationControl metody i jest wyświetlana w strefie połączeń składniki Web Part.

WebPartTransformer jest abstrakcyjną klasą i musi zostać rozszerzona w celu zapewnienia dostosowanych tłumaczeń między różnymi typami punktów połączenia.

Uwagi dotyczące implementowania

Należy zastąpić metodę Transform(Object) .

Konstruktory

WebPartTransformer()

Inicjuje nowe wystąpienie klasy WebPartTransformer.

Metody

CreateConfigurationControl()

Wyświetla ASP.NET kontrolkę, która konfiguruje transformator w ConnectionsZone strefie.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
LoadConfigurationState(Object)

Ładuje stan konfiguracji zapisany za pomocą SaveConfigurationState() metody .

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
SaveConfigurationState()

Zapisuje stan konfiguracji ustawiony przez użytkownika w kontrolce konfiguracji ASP.NET.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
Transform(Object)

Po zaimplementowaniu program udostępnia obiekt do przekształcania danych.

Dotyczy