WebPartTransformer クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
互換性のない 2 つのコネクション ポイント間でのデータ変換を行うトランスフォーマー クラスの基本実装を提供します。
public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
- 継承
-
WebPartTransformer
- 派生
例
次のコード例は、クラスから派生するカスタマイズされたトランスフォーマーを作成する方法を WebPartTransformer 示しています。 このトランスフォーマーは、Web パーツ RowToStringTransformer
プロバイダーと、互換性のない接続ポイントを持つコンシューマー Web パーツ接続できるようにします。 プロバイダーは型 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
コード例の最初のセクションには、プロバイダーとコンシューマーのWeb パーツ コントロールのコードと、トランスフォーマーのコードが含まれています。
// 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
コード例の 2 番目のセクションでは、オブジェクトの宣言構文内にトランスフォーマーを含める方法を 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>
Web ページで <transformers>
使用できるようにするには、Web.config ファイルのセクションでカスタマイズしたトランスフォーマーを指定する必要があります。 コード例の 3 番目のセクションでは、カスタマイズしたトランスフォーマーを 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>
コード例には、Web パーツ ページの表示モードを変更できるユーザー コントロールが含まれています。 ユーザー コントロールのソース コードは、別のトピックから取得します。 ユーザー コントロールの .ascx ファイルは[、チュートリアル: Web パーツ ページの表示モードの変更] から取得でき、.aspx ページと同じフォルダーに配置する必要があります。
注釈
トランスフォーマーは、互換性のない接続ポイントを持つ 2 つのWeb パーツ コントロール間でデータを変換するために使用されます。 接続ポイントは、異なるインターフェイスを介してデータを提供または使用する場合、互換性がありません。 たとえば、型のプロバイダー接続ポイントを実装するプロバイダーは、型 IWebPartRow のプロバイダー接続ポイント IWebPartTableを想定しているコンシューマーに直接接続できませんでした。 代わりに、トランスフォーマーを使用して 2 つのWeb パーツ コントロールを接続する必要があります。
トランスフォーマーは、プロバイダー接続ポイントでサポートされている型のデータを受け入れます。 そのデータをコンシューマー接続ポイントでサポートされている型に変換するために必要な内部処理を実行します。
トランスフォーマーは、接続モードのときにトランスフォーマーを構成できるユーザー インターフェイス (UI) を提供できます。 構成コントロールはメソッドをCreateConfigurationControl介して取得され、Web パーツ接続ゾーンに表示されます。
WebPartTransformer は抽象クラスであり、さまざまな種類の接続ポイント間でカスタマイズされた翻訳を提供するために拡張する必要があります。
注意 (実装者)
メソッドをオーバーライドする Transform(Object) 必要があります。
コンストラクター
WebPartTransformer() |
WebPartTransformer クラスの新しいインスタンスを初期化します。 |
メソッド
CreateConfigurationControl() |
ConnectionsZone ゾーン内でトランスフォーマーを構成する ASP.NET コントロールを表示します。 |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
LoadConfigurationState(Object) |
SaveConfigurationState() メソッドによって保存された構成状態を読み込みます。 |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
SaveConfigurationState() |
ユーザーによって設定された構成状態を ASP.NET 構成コントロールに保存します。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
Transform(Object) |
実装された場合、データ変換のためのオブジェクトを提供します。 |