RowToFieldTransformerとは? わかりやすく解説

RowToFieldTransformer クラス

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

IWebPartRow インターフェイスを実装しているプロバイダから IWebPartField インターフェイスを通じてデータを受け取るコンシューマへの Web パーツ接続においてデータを変換します。

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

Public NotInheritable Class
 RowToFieldTransformer
    Inherits WebPartTransformer
    Implements IWebPartField
Dim instance As RowToFieldTransformer
public sealed class RowToFieldTransformer :
 WebPartTransformer, IWebPartField
public ref class RowToFieldTransformer sealed
 : public WebPartTransformer, IWebPartField
public final class RowToFieldTransformer extends
 WebPartTransformer implements IWebPartField
public final class RowToFieldTransformer extends
 WebPartTransformer implements IWebPartField
解説解説
使用例使用例

RowToFieldTransformer オブジェクトを使用して、互換性のないコネクション ポイントを持つプロバイダとコンシューマを接続する方法のコード例を次に示します。コード例の最初の部分は、プロバイダとして動作する Web パーツ コントロールを示します。RowProviderWebPart という名前のプロバイダ クラスは、IWebPartRow インターフェイスを通じてデータを提供します。

Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Data
Imports System.Reflection
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

'This sample code creates a Web Parts control that acts as a provider
 of row data.
Namespace Samples.AspNet.VB.Controls

    Public NotInheritable Class
 RowProviderWebPart
        Inherits WebPart
        Implements IWebPartRow

        Private _table As DataTable


        Public Sub New()
            _table = New DataTable()

            Dim col As New
 DataColumn()
            col.DataType = GetType(String)
            col.ColumnName = "Name"
            _table.Columns.Add(col)

            col = New DataColumn()
            col.DataType = GetType(String)
            col.ColumnName = "Address"
            _table.Columns.Add(col)

            col = New DataColumn()
            col.DataType = GetType(Integer)
            col.ColumnName = "ZIP Code"
            _table.Columns.Add(col)

            Dim row As DataRow = _table.NewRow()
            row("Name") = "John
 Q. Public"
            row("Address") = "123
 Main Street"
            row("ZIP Code") = 98000
            _table.Rows.Add(row)

        End Sub 'New

        <ConnectionProvider("Row")> _
        Public Function GetConnectionInterface()
 As IWebPartRow
            Return New RowProviderWebPart()

        End Function 'GetConnectionInterface

        Public ReadOnly Property
 Schema() As PropertyDescriptorCollection _
            Implements IWebPartRow.Schema
            Get
                Return TypeDescriptor.GetProperties(_table.DefaultView(0))
            End Get
        End Property

        Public Sub GetRowData(ByVal
 callback As RowCallback) _
            Implements IWebPartRow.GetRowData
            callback(_table.DefaultView(0))

        End Sub 'GetRowData
    End Class 'RowProviderWebPart
           

End Namespace
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

//This sample code creates a Web Parts control that acts as a provider
 of row data.
namespace Samples.AspNet.CS.Controls
{
    public sealed class RowProviderWebPart
 : WebPart, IWebPartRow
    {
        private DataTable _table;

        public RowProviderWebPart()
        {
            _table = new DataTable();

            DataColumn col = new DataColumn();
            col.DataType = typeof(string);
            col.ColumnName = "Name";
            _table.Columns.Add(col);

            col = new DataColumn();
            col.DataType = typeof(string);
            col.ColumnName = "Address";
            _table.Columns.Add(col);

            col = new DataColumn();
            col.DataType = typeof(int);
            col.ColumnName = "ZIP Code";
            _table.Columns.Add(col);

            DataRow row = _table.NewRow();
            row["Name"] = "John Q. Public";
            row["Address"] = "123 Main Street";
            row["ZIP Code"] = 98000;
            _table.Rows.Add(row);
        }
        
        [ConnectionProvider("Row")]
        public IWebPartRow GetConnectionInterface()
        {
            return new RowProviderWebPart();
        }
        
        public PropertyDescriptorCollection Schema
        {
            get
            {
                return TypeDescriptor.GetProperties(_table.DefaultView[0]);
            }
        }
        
        public void GetRowData(RowCallback
 callback)
        {
            callback(_table.DefaultView[0]);
        }          
    }
}

コード例の 2 番目の部分は、Web パーツ接続のコンシューマとなる Web パーツ コントロールです。FieldConsumerWebPart という名前のコンシューマ クラスは、IWebPartField インターフェイスからデータを受け取ります。

Imports System
Imports System.ComponentModel
Imports System.Reflection
Imports System.Collections
Imports System.Data
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

Namespace Samples.AspNet.VB.Controls
    ' This sample code creates a Web Parts control that acts as 
    ' a consumer of an IField interface.

    Public Class FieldConsumerWebPart
        Inherits WebPart

        Private _provider As IWebPartField
        Private _fieldValue As Object

        Private Sub GetFieldValue(ByVal
 fieldValue As Object)
            _fieldValue = fieldValue

        End Sub 'GetFieldValue

        Protected Overrides Sub
 OnPreRender(ByVal e As EventArgs)
            If Not (_provider Is
 Nothing) Then
                _provider.GetFieldValue((New FieldCallback(AddressOf
 GetFieldValue)))
            End If
            MyBase.OnPreRender(e)

        End Sub 'OnPreRender

        Protected Overrides Sub
 RenderContents(ByVal writer As HtmlTextWriter)

            If Not (_provider Is
 Nothing) Then
                Dim prop As PropertyDescriptor
 = _provider.Schema

                If Not (prop Is
 Nothing) AndAlso Not (_fieldValue
 Is Nothing) Then
                    writer.Write(prop.DisplayName & ": "
 & _fieldValue)
                Else
                    writer.Write("No data")
                End If
            Else
                writer.Write("Not connected")
            End If

        End Sub 'RenderContents

        <ConnectionConsumer("Field")> _
        Public Sub SetConnectionInterface(ByVal
 provider As IWebPartField)
            _provider = provider

        End Sub 'SetConnectionInterface

        Private Class FieldConsumerConnectionPoint
            Inherits ConsumerConnectionPoint

            Public Sub New(ByVal
 callbackMethod As MethodInfo, _
              ByVal interfaceType As Type,
 ByVal controlType As Type, _
              ByVal name As String,
 ByVal id As String, _
              ByVal allowsMultipleConnections As
 Boolean)
                MyBase.New(callbackMethod, interfaceType, controlType,
 _
                  name, id, allowsMultipleConnections)

            End Sub 'New
        End Class 'FieldConsumerConnectionPoint
 
    End Class 'FieldConsumerWebPart
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Web;
using System.Web.UI;
using System.Security.Permissions;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace Samples.AspNet.CS.Controls
{
    
    // This sample code creates a Web Parts control that acts
    // as a consumer of an IField interface.

    // A consumer WebPart control that consumes strings.
    [AspNetHostingPermission(SecurityAction.Demand,
      Level = AspNetHostingPermissionLevel.Minimal)]
    [AspNetHostingPermission(SecurityAction.InheritanceDemand,
      Level = AspNetHostingPermissionLevel.Minimal)]
    public class FieldConsumerWebPart : WebPart
    {
        private IWebPartField _provider;
        private object _fieldValue;

        private void GetFieldValue(object fieldValue)
        {
            _fieldValue = fieldValue;
        }

        public bool ConnectionPointEnabled
        {
            get
            {
                object o = ViewState["ConnectionPointEnabled"];
                return (o != null) ? (bool)o
 : true;
            }
            set
            {
                ViewState["ConnectionPointeEnabled"] = value;
            }
        }

        protected override void OnPreRender(EventArgs
 e)
        {
            if (_provider != null)
            {
                _provider.GetFieldValue(new FieldCallback(GetFieldValue));
            }
            base.OnPreRender(e);
        }

        protected override void RenderContents(HtmlTextWriter
 writer)
        {

            if (_provider != null)
            {
                PropertyDescriptor prop = _provider.Schema;

                if (prop != null &&
 _fieldValue != null)
                {
                    writer.Write(prop.DisplayName + ": " + _fieldValue);
                }
                else
                {
                    writer.Write("No data");
                }
            }
            else
            {
                writer.Write("Not connected");
            }
        }
        
        [ConnectionConsumer("Field")]
        public void SetConnectionInterface(IWebPartField
 provider)
        {
            _provider = provider;
        }

        private class FieldConsumerConnectionPoint
 : ConsumerConnectionPoint
        {
            public FieldConsumerConnectionPoint(MethodInfo callbackMethod,
 Type interfaceType, Type controlType,
                 string name, string id, bool
 allowsMultipleConnections)
                : base(callbackMethod, interfaceType, controlType
,
                       name, id, allowsMultipleConnections)
            {
            }

            public override bool GetEnabled(Control
 control)
            {
                return ((FieldConsumerWebPart)control).ConnectionPointEnabled;
            }

        }
    }
}

コード例の 3 番目の部分は、2 つのコントロールを持ち、この 2 つのコントロールを接続するための RowToFieldTransformer オブジェクトを定義するページを示します。

<%@ Page Language="VB" %>
<%@ register tagprefix="uc1" 
    tagname="DisplayModeMenuVB" 
    src="~/displaymodemenuvb.ascx" %>
<%@ Register TagPrefix="wp" 
    NameSpace="Samples.AspNet.VB.Controls"
 %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
   
</script>

<html  >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:webpartmanager id=manager runat=server>
    <staticconnections>
      <asp:WebPartConnection ID=conn1 ProviderID=rp1 ConsumerID=fc1>
        <asp:RowToFieldTransformer />
      </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 Title="provider"
 ID=rp1 runat=server />
          <wp:FieldConsumerWebPart Title="consumer"
 ID=fc1 runat=server />
        </zonetemplate>
      </asp:webpartzone>
    </td>
    <td>
      <asp:connectionszone id=connectionszone1 runat=server />
    </td>
  </tr>
  </table>
    
  </form>
</body>
</html>
<%@ Page Language="C#" %>
<%@ register tagprefix="uc1" 
    tagname="DisplayModeMenuCS" 
    src="~/displaymodemenucs.ascx" %>
<%@ Register TagPrefix="wp" 
    NameSpace="Samples.AspNet.CS.Controls" %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
   
</script>

<html  >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:webpartmanager id=manager runat=server>
    <staticconnections>
      <asp:WebPartConnection ID=conn1 ProviderID=rp1 ConsumerID=fc1>
        <asp:RowToFieldTransformer FieldName="Zip Code"/>
      </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 Title="provider" ID=rp1 runat=server
 />
          <wp:FieldConsumerWebPart Title="consumer" ID=fc1 runat=server
 />
        </zonetemplate>
      </asp:webpartzone>
    </td>
    <td>
      <asp:connectionszone id=connectionszone1 runat=server />
    </td>
  </tr>
  </table>
    
  </form>
</body>
</html>

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

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

RowToFieldTransformer コンストラクタ


RowToFieldTransformer プロパティ


パブリック プロパティパブリック プロパティ

  名前 説明
パブリック プロパティ FieldName 変換する値の名前を取得または設定します。
明示的インターフェイスの実装明示的インターフェイスの実装
  名前 説明
インターフェイスの明示的な実装 System.Web.UI.WebControls.WebParts.IWebPartField.Schema このメンバの説明については、IWebPartField.Schema のトピックを参照してください。
参照参照

関連項目

RowToFieldTransformer クラス
System.Web.UI.WebControls.WebParts 名前空間

RowToFieldTransformer メソッド


パブリック メソッドパブリック メソッド

プロテクト メソッドプロテクト メソッド
明示的インターフェイスの実装明示的インターフェイスの実装
  名前 説明
インターフェイスの明示的な実装 System.Web.UI.WebControls.WebParts.IWebPartField.GetFieldValue このメンバの説明については、IWebPartField.GetFieldValue のトピックを参照してください。
参照参照

関連項目

RowToFieldTransformer クラス
System.Web.UI.WebControls.WebParts 名前空間

RowToFieldTransformer メンバ

IWebPartRow インターフェイスを実装しているプロバイダから IWebPartField インターフェイスを通じてデータを受け取るコンシューマへの Web パーツ接続においてデータを変換します。

RowToFieldTransformer データ型で公開されるメンバを以下の表に示します。


パブリック コンストラクタパブリック コンストラクタ
  名前 説明
パブリック メソッド RowToFieldTransformer RowToFieldTransformer クラスの新しいインスタンスを初期化します。
パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ FieldName 変換する値の名前を取得または設定します。
パブリック メソッドパブリック メソッド
プロテクト メソッドプロテクト メソッド
明示的インターフェイスの実装明示的インターフェイスの実装
  名前 説明
インターフェイスの明示的な実装 System.Web.UI.WebControls.WebParts.IWebPartField.GetFieldValue このメンバの説明については、IWebPartField.GetFieldValue のトピックを参照してください。
インターフェイスの明示的な実装 System.Web.UI.WebControls.WebParts.IWebPartField.Schema このメンバの説明については、IWebPartField.Schema のトピックを参照してください。
参照参照

関連項目

RowToFieldTransformer クラス
System.Web.UI.WebControls.WebParts 名前空間



英和和英テキスト翻訳

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

辞書ショートカット

すべての辞書の索引

「RowToFieldTransformer」の関連用語

RowToFieldTransformerのお隣キーワード
検索ランキング

   

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



RowToFieldTransformerのページの著作権

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

©2026 GRAS Group, Inc.RSS