WebPartTransformer Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет базовую реализацию для классов преобразователей, чтобы преобразовывать данные между двумя несовместимыми точками подключения.
public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
- Наследование
-
WebPartTransformer
- Производный
Примеры
В следующем примере кода показано, как создать настраиваемый преобразователь, производный WebPartTransformer от класса . Преобразователь с именем RowToStringTransformer
позволяет подключать поставщика веб-частей и потребителя веб-частей с несовместимыми точками подключения. Поставщик предоставляет данные типа IWebPartRow, но потребитель принимает только данные типа String. Класс RowToStringTransformer
выполняет необходимое преобразование.
Пример кода не включает реализацию поставщика или потребителя. Необходимо создать поставщика, реализующего IWebPartRow интерфейс , и потребителя, который ожидает данные через настраиваемый интерфейс с именем IString
для работы примера.
// 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
Первый раздел примера кода содержит код для элементов управления веб-частей поставщика и потребителя, а также код для преобразователя.
// 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 объекта .
<%@ 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, чтобы он был доступен для использования на веб-странице. В третьем разделе примера кода показано, как добавить настроенный преобразователь в файл 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>
Пример кода включает пользовательский элемент управления, который позволяет изменять режимы отображения на странице веб-частей. Исходный код для пользовательского элемента управления поступает из другого раздела. ASCX-файл для пользовательского элемента управления можно получить в разделе Walkthrough: Changing Display Modes on a Web Parts Page (Пошаговое руководство. Изменение режимов отображения на странице веб-частей). Его необходимо поместить в ту же папку, что и aspx-страница.
Комментарии
Преобразователи используются для преобразования данных между двумя элементами управления веб-частей с несовместимыми точками подключения. Точки подключения несовместимы при предоставлении или использовании данных через разные интерфейсы. Например, поставщик, реализующий точку подключения поставщика типа IWebPartRow , не может напрямую подключиться к потребителю, ожидая точку подключения поставщика типа IWebPartTable. Вместо этого для соединения двух элементов управления веб-частей необходимо использовать преобразователь.
Преобразователь принимает данные типа, поддерживаемого точкой подключения поставщика. Он выполняет необходимую внутреннюю обработку для преобразования данных в тип, поддерживаемый точкой подключения потребителя.
Преобразователь может предоставить пользовательский интерфейс, позволяющий пользователю настраивать преобразователь в режиме подключения. Элемент управления конфигурацией извлекается с помощью CreateConfigurationControl метода и отображается в зоне подключений веб-частей.
WebPartTransformer является абстрактным классом и должен быть расширен для предоставления настраиваемых переводов между разными типами точек соединения.
Примечания для тех, кто реализует этот метод
Необходимо переопределить Transform(Object) метод .
Конструкторы
WebPartTransformer() |
Инициализирует новый экземпляр класса WebPartTransformer. |
Методы
CreateConfigurationControl() |
Отображает элемент управления ASP.NET, который выполняет настройку преобразователя в области ConnectionsZone. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
LoadConfigurationState(Object) |
Загружает состояние конфигурации, сохраненное в методе SaveConfigurationState(). |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
SaveConfigurationState() |
Сохраняет состояние конфигурации, заданное пользователем в элементе управления конфигурации ASP.NET. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Transform(Object) |
При реализации предоставляет объект для преобразования данных. |