WebPartTransformer WebPartTransformer WebPartTransformer WebPartTransformer Class

Определение

Предоставляет базовую реализацию для классов преобразователей, чтобы преобразовывать данные между двумя несовместимыми точками подключения.Provides basic implementation for transformer classes to convert data between two incompatible connection points.

public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
Наследование
WebPartTransformerWebPartTransformerWebPartTransformerWebPartTransformer
Производный

Примеры

В следующем примере кода показано, как создать настраиваемый преобразователь, производный от WebPartTransformer класса.The following code example demonstrates how to create a customized transformer that derives from the WebPartTransformer class. Преобразователь с именем RowToStringTransformerпозволяет подключить поставщик веб-части и веб-части потребителя с несовместимыми точками соединения.The transformer, named RowToStringTransformer, allows for a Web Parts provider and Web Parts consumer with incompatible connection points to be connected. Поставщик представляет данные типа IWebPartRow, но потребитель принимает только данные типа. StringThe provider presents data of type IWebPartRow, but the consumer accepts only data of type String. RowToStringTransformer Класс выполняет необходимое преобразование.The RowToStringTransformer class performs the necessary conversion.

Пример кода не включает реализацию поставщика или потребителя.The code example does not include an implementation of the provider or consumer. Необходимо создать поставщик, реализующий IWebPartRow интерфейс, и потребитель, который ожидает данные через настроенный интерфейс, с именем IString , для работы в этом примере.You must create a provider that implements the IWebPartRow interface and a consumer that expects data through a customized interface named IString for the example to work.

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

В первом разделе примера кода содержится код для элементов управления поставщика и потребителя веб-части, а также код для преобразователя.The first section of the code example contains code for the provider and consumer Web Parts controls, and the code for the transformer.

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

Во втором разделе примера кода показано, как включить преобразователь в декларативный синтаксис для WebPartConnection объекта.The second section of the code example shows how to include the transformer within the declarative syntax for a WebPartConnection object.

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

Настроенный преобразователь должен быть указан в <transformers> разделе файла Web. config для использования на веб-странице.A customized transformer must be specified in the <transformers> section of the Web.config file to be available for use in a Web page. В третьем разделе примера кода показано, как добавить настраиваемый трансформатор в файл Web. config.The third section of the code example shows how to add the customized transformer to the Web.config file.

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

Пример кода включает пользовательский элемент управления, позволяющий изменять режимы экрана на веб-части странице.The code example includes a user control that enables you to change display modes on a Web Parts page. Исходный код для пользовательского элемента управления поступает из другого раздела.The source code for the user control comes from another topic. Файл. ascx для пользовательского элемента управления можно получить из пошагового руководства. Изменение режимов экрана на веб-части страницеи его необходимо поместить в ту же папку, что и ASPX-страница.You can obtain the .ascx file for the user control from Walkthrough: Changing Display Modes on a Web Parts Page, and it must be placed in the same folder as the .aspx page.

Комментарии

Преобразователи используются для преобразования данных между двумя элементами управления веб-части с несовместимыми точками соединения.Transformers are used to translate data between two Web Parts controls with incompatible connection points. Точки соединения несовместимы, если они предоставляют или потребляют данные через различные интерфейсы.Connection points are incompatible when they provide or consume data through different interfaces. Например, поставщик, реализующий точку подключения поставщика типа IWebPartRow , не может напрямую подключиться к потребителю, ожидающей точку подключения поставщика типа. IWebPartTableFor example, a provider implementing a provider connection point of type IWebPartRow could not directly connect to a consumer expecting a provider connection point of type IWebPartTable. Вместо этого необходимо использовать преобразователь для соединения двух элементов управления веб-части.Instead, a transformer must be used to connect the two Web Parts controls.

Преобразователь принимает данные типа, поддерживаемого точкой подключения поставщика.The transformer accepts data of the type supported by the provider connection point. Он выполняет необходимую внутреннюю обработку для преобразования этих данных в тип, поддерживаемый точкой подключения потребителя.It does the necessary internal processing to convert that data into the type supported by the consumer connection point.

Преобразователь может предоставить пользовательский интерфейс, позволяющий пользователю настроить преобразователь в режиме подключения.A transformer can provide a user interface (UI) that allows the user to configure the transformer when in the connect mode. Управление конфигурацией извлекается с помощью CreateConfigurationControl метода и отображается в зоне веб-частиных подключений.The configuration control is retrieved through the CreateConfigurationControl method and is displayed in a Web Parts connections zone.

WebPartTransformerявляется абстрактным классом и должен быть расширен для предоставления настраиваемых переводов между разными типами точек соединения.WebPartTransformer is an abstract class and must be extended to provide customized translations between different types of connection points.

Примечания для тех, кто наследует этот метод

Необходимо переопределить Transform(Object) метод.You must override the Transform(Object) method.

Конструкторы

WebPartTransformer() WebPartTransformer() WebPartTransformer() WebPartTransformer()

Инициализирует новый экземпляр класса WebPartTransformer.Initializes a new instance of the WebPartTransformer class.

Методы

CreateConfigurationControl() CreateConfigurationControl() CreateConfigurationControl() CreateConfigurationControl()

Отображает элемент управления ASP.NET, который выполняет настройку преобразователя в области ConnectionsZone.Displays an ASP.NET control that configures a transformer in the ConnectionsZone zone.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
LoadConfigurationState(Object) LoadConfigurationState(Object) LoadConfigurationState(Object) LoadConfigurationState(Object)

Загружает состояние конфигурации, сохраненное в методе SaveConfigurationState().Loads the configuration state saved with the SaveConfigurationState() method.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
SaveConfigurationState() SaveConfigurationState() SaveConfigurationState() SaveConfigurationState()

Сохраняет состояние конфигурации, заданное пользователем в элементе управления конфигурации ASP.NET.Saves the configuration state set by the user in the ASP.NET configuration control.

ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)
Transform(Object) Transform(Object) Transform(Object) Transform(Object)

При реализации предоставляет объект для преобразования данных.When implemented, provides an object for transforming the data.

Применяется к