WebPartTransformer クラスとは? わかりやすく解説

WebPartTransformer クラス

メモ : このクラスは、.NET Framework version 2.0新しく追加されたものです。

互換性のない 2 つコネクション ポイント間でのデータ変換を行うトランスフォーマ クラス基本実装提供します

名前空間: System.Web.UI.WebControls.WebParts
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public MustInherit Class
 WebPartTransformer
Dim instance As WebPartTransformer
public abstract class WebPartTransformer
public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
public abstract class WebPartTransformer
解説解説

トランスフォーマは、互換性のないコネクション ポイントを持つ 2 つWeb パーツ コントロール間でのデータ変換使用されます。コネクション ポイント異なインターフェイス通じてデータを提供または利用する場合、それらのコネクション ポイントの間に互換性はありません。たとえば、IWebPartRow 型のプロバイダ コネクション ポイント実装しているプロバイダは、IWebPartTable 型のプロバイダ コネクション ポイント要求するコンシューマ直接接続できません。代わりに、トランスフォーマを使用して 2 つWeb パーツ コントロール接続する必要があります

トランスフォーマは、プロバイダ コネクション ポイントによってサポートされる型のデータ受け入れます。そして、そのデータコンシューマ接続ポイントサポートされる型に変換するために、必要な内部処理行います

トランスフォーマは、接続モードのときにユーザーがトランスフォーマを構成できるユーザー インターフェイス (UI: User Interface) を提供します構成コントロールは CreateConfigurationControl メソッド通じて取得されWeb パーツ接続ゾーン表示されます。

WebPartTransformer抽象クラスで、異なる型のコネクション ポイント間でのカスタマイズされた変換提供できるように拡張する必要があります

継承時の注意 Transform メソッドオーバーライドする必要があります

使用例使用例

WebPartTransformer クラスから派生したカスタマイズされたトランスフォーマを作成する方法コード例次に示しますRowToStringTransformer という名前のトランスフォーマにより、互換性のないコネクション ポイントを持つ Web パーツ プロバイダWeb パーツ コンシューマ接続できるようになりますプロバイダIWebPartRow 型のデータ提供しますが、コンシューマString 型のデータしか受け入れません。RowToStringTransformer クラスが、必要な変換実行します

コード例には、プロバイダまたはコンシューマ実装含まれていません。この例を実行するには、IWebPartRow インターフェイス実装するプロバイダと、IString という名前のカスタマイズされたインターフェイス通じたデータを必要とするコンシューマ作成する必要があります

コード例最初部分には、プロバイダ Web パーツ コントロールおよびコンシューマ Web パーツ コントロールコードと、トランスフォーマのコード含まれています。

' 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
// 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);
        }
    }
}

コード例2 番目の部分は、トランスフォーマを WebPartConnection オブジェクト宣言構文含め方法示してます。

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

カスタマイズされたトランスフォーマを Web ページ使用できるようにするためには、Web.config ファイル<transformers> セクション指定する必要がありますコード例3 番目の部分は、カスタマイズされたトランスフォーマを Web.config ファイル追加する方法示してます。

[Visual Basic]

<webParts enableExport="true">
    <transformers>
       <add name="RowToStringTransformer"
          type="Samples.AspNet.VB.Controls.RowToStringTransformer" />
    </transformers>
</webParts>

[C#]

<webParts enableExport="true">
    <transformers>
       <add name="RowToStringTransformer"
          type="Samples.AspNet.CS.Controls.RowToStringTransformer" />
    </transformers>
</webParts>

このコード例には、ユーザーWeb パーツ ページ上で表示モード変更できるようにするユーザー コントロール含まれています。ユーザー コントロールソース コードは、別のトピックのものを使用してます。ユーザー コントロール用の .ascx ファイルチュートリアル : Web パーツ ページでの表示モード変更 から取得でき、.aspx ページと同じフォルダ内に配置する必要があります

.NET Framework のセキュリティ.NET Frameworkセキュリティ
継承階層継承階層
System.Object
  System.Web.UI.WebControls.WebParts.WebPartTransformer
     System.Web.UI.WebControls.WebParts.RowToFieldTransformer
     System.Web.UI.WebControls.WebParts.RowToParametersTransformer
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
WebPartTransformer メンバ
System.Web.UI.WebControls.WebParts 名前空間



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「WebPartTransformer クラス」の関連用語

WebPartTransformer クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



WebPartTransformer クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS