IWebPartRow インターフェイスとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > IWebPartRow インターフェイスの意味・解説 

IWebPartRow インターフェイス

メモ : このインターフェイスは、.NET Framework version 2.0新しく追加されたものです。

データ単一フィールド使用して2 つサーバー コントロール接続するためのプロバイダ インターフェイス定義します

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

解説解説

このインターフェイスは、Web パーツ接続使用するようにデザインされています。Web パーツ接続では、WebPartZoneBase ゾーンにあって一方コンシューマとして動作しもう一方プロバイダとして動作する2 つサーバー コントロール間に接続確立してデータ共有しますWeb パーツ接続データ共有する機構インターフェイス インスタンスです。これにより、プロバイダコール バック メソッド使用してコンシューマに対して処理を実行します接続確立するには、コンシューマプロバイダ両方が同じインターフェイス型動作してデータ共有する必要がありますプロバイダ送信したインターフェイス型コンシューマ認識しない場合でも、プロバイダ送信したインターフェイス インスタンスコンシューマ認識する型に変換するトランスフォーマ (WebPartTransformer オブジェクト) を使用すると、コントロール接続できます接続詳細については、WebPartConnection のトピックおよび「Web パーツ接続概要」を参照してください

IWebPartRow インターフェイスは、データ行に基づいて接続作成するための標準インターフェイスとして、Web パーツ コントロール セット含まれているプロバイダ インターフェイスです。また、Web パーツ接続使用するカスタム インターフェイス作成することもできますが、多くデータ ドリブン Web アプリケーションでは、共通のフィールド (詳細については、IWebPartField インターフェイストピック参照)、テーブル (詳細については、IWebPartTable インターフェイストピック参照)、またはデータ ソースの行に基づいて接続作成する役に立ちます一般的な接続では、プロバイダとして動作する WebPart コントロールIWebPartRow インターフェイス実装し、特別なコールバック メソッドコンシューマにそのインターフェイスインスタンス提供します。たとえば、プロバイダは、ユーザー情報テーブル内のユーザー対応する行の IWebPartRow インターフェイス実装できますコンシューマとして動作するもう一方WebPart コントロールは、インターフェイス インスタンス受け取るための特別なメソッド定義します次にユーザー データ抽出し、それを使用してユーザーアカウントに関する追加情報検索して、そのユーザーに関するすべての情報ページ上に表示します

IWebPartRow インターフェイスには、2 つ公開されメンバありますSchema プロパティは、PropertyDescriptorCollection オブジェクト内にカプセル化されているデータに関するスキーマ情報返します。GetRowData メソッドは、コールバック メソッド呼び出されたときに、実装側 (プロバイダ コントロールなど) がインターフェイス インスタンスの行データ取得するために使用するメソッド宣言します

使用例使用例

IWebPartRow インターフェイス使用して2 つコントロール間で静的接続作成する方法次のコード例示しますコード例は、次の 3 つの部分構成されます。

コード例最初部分は、2 つカスタム コントロールソース コードです。1 番目は、IWebPartRow インターフェイス実装するプロバイダ用のコードです。コード例簡略化するために、プロバイダデータベース接続する代わりにいくつかのデータを含むテーブル作成しますGetConnectionInterface メソッドコンシューマインターフェイス インスタンス返すコールバック メソッドであり、プロバイダコネクション ポイントとして機能しますコンシューマは、SetConnectionInterface という名前のメソッドで、ConnectionConsumer 属性マークされプロバイダからインターフェイス インスタンス取得しますインターフェイスインスタンス取得した後、コンシューマOnPreRender メソッドプロバイダGetRowData メソッド実装呼び出し実際のデータ取得してページ書き込みます

コード例実行するためには、このソース コードコンパイルする必要があります。それを明示的にコンパイルし、コンパイル済みアセンブリWeb サイトBin フォルダまたはグローバル アセンブリ キャッシュ配置できますサイトの App_Code フォルダソース コード配置し実行時動的にコンパイルすることもできます。このコード例は、動的コンパイル使用しますコンパイル方法を示すチュートリアルについては、「チュートリアル : カスタム サーバー コントロール開発と使用」を参照してください

Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Data
Imports System.Reflection
Imports System.Security.Permissions
Imports System.Web
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 provider
 
  ' of row data.
  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  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 _
      ComponentModel.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.Rows)

    End Sub

  End Class 'RowProviderWebPart
 


  ' This sample code creates a Web Parts control that acts as a consumer
 
  ' of row data.
  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public NotInheritable Class
 RowConsumerWebPart
    Inherits WebPart
    Private _provider As IWebPartRow
    Private _tableData As ICollection


    Private Sub GetRowData(ByVal
 rowData As Object)
      _tableData = CType(rowData, ICollection)

    End Sub


    Protected Overrides Sub
 OnPreRender(ByVal e As EventArgs)

      If Not (_provider Is
 Nothing) Then
        _provider.GetRowData(New RowCallback(AddressOf
 GetRowData))
      End If

    End Sub

    Protected Overrides Sub
 RenderContents(ByVal writer As HtmlTextWriter)

      If Not (_provider Is
 Nothing) Then
        Dim props As PropertyDescriptorCollection
 = _provider.Schema
        Dim count As Integer
 = 0
        If Not (props Is
 Nothing) AndAlso props.Count > 0 _
          AndAlso Not (_tableData Is
 Nothing) Then

          Dim prop As PropertyDescriptor
          For Each prop In
 props
            Dim o As DataRow
            For Each o In
 _tableData
              writer.Write(prop.DisplayName & ": "
 & o(count))
              writer.WriteBreak()
              writer.WriteLine()
              count = count + 1
            Next o
          Next prop
        Else
          writer.Write("No data")
        End If
      Else
        writer.Write("Not connected")
      End If

    End Sub


    <ConnectionConsumer("Row")> _
    Public Sub SetConnectionInterface(ByVal
 provider As IWebPartRow)
      _provider = provider

    End Sub

  End Class 'RowConsumerWebPart
 

End Namespace  ' Samples.AspNet.VB.Controls
 
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
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 provider
 
  // of row data.
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  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.Rows);
        }

  } // RowProviderWebPart


  // This sample code creates a Web Parts control that acts as a consumer
 
  // of row data.
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]  
  public sealed class RowConsumerWebPart :
 WebPart 
  {
    private IWebPartRow _provider;
        private ICollection _tableData;
    
        private void GetRowData(object rowData)
        {
            _tableData = (ICollection)rowData;
        }

        protected override void OnPreRender(EventArgs
 e)
        {
            if (_provider != null)
            {
                _provider.GetRowData(new RowCallback(GetRowData));
            }
        }


    protected override void RenderContents(HtmlTextWriter
 writer) 
    {
      if (_provider != null) 
      {
        PropertyDescriptorCollection props = _provider.Schema;
            int count = 0;
        if (props != null && props.Count
 > 0 && _tableData != null) 
        {
            foreach (PropertyDescriptor prop in
 props) 
                  {
                      foreach (DataRow o in
 _tableData)
                      {
                          writer.Write(prop.DisplayName + ": " + o[count]);
                          writer.WriteBreak();
                          writer.WriteLine();
                          count = count + 1;
                      }
            }
        }
        else 
        {
          writer.Write("No data");
        }
      }
      else 
      {
        writer.Write("Not connected");
      }
    }

    [ConnectionConsumer("Row")]
    public void SetConnectionInterface(IWebPartRow
 provider) 
        {
      _provider = provider;
    }

  } // RowConsumerWebPart
    
} // Samples.AspNet.CS.Controls 

コード例2 番目の部分は、静的接続宣言してコントロールホストする Web ページです。ページ先頭付近にあるのは、App_Code ディレクトリ内に格納されソース コード名前空間宣言する Register ディレクティブです。接続は、<asp:webpartconnection> 要素使用して宣言されます。カスタムコンシューマ コントロールプロバイダ コントロールは、<asp:webpartzone> 要素内の <zonetemplate> 要素宣言されます。この要素は、コントロール接続できるようにするために必要です (これらは WebPartZoneBase クラスから継承したゾーン内に存在する必要があります)。

<%@ page language="VB" %>
<%@ Register tagprefix="IRow" 
    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">

<html  >
<head runat="server">
    <title>IRow Test Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:webpartmanager ID="WebPartManager1"
 runat="server">
        <staticconnections>
          <asp:webpartconnection ID="wp1" ProviderID="provider1"
 
            ConsumerID="consumer1">
          </asp:webpartconnection>
        </staticconnections>
      </asp:webpartmanager>
       
        <asp:webpartzone ID="WebPartZone1" runat="server">
          <ZoneTemplate>
            <irow:RowProviderWebPart ID="provider1"
 runat="server" 
              Title="Row Provider Control" />
            <irow:RowConsumerWebPart ID="consumer1"
 runat="server" 
              Title="Row Consumer Control" />
          </ZoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>
<%@ page language="C#" %>
<%@ Register tagprefix="IRow" 
    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">

<html  >
<head runat="server">
    <title>IRow Test Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:webpartmanager ID="WebPartManager1" runat="server">
        <staticconnections>
          <asp:webpartconnection ID="wp1" ProviderID="provider1"
 
            ConsumerID="consumer1">
          </asp:webpartconnection>
        </staticconnections>
      </asp:webpartmanager>
       
        <asp:webpartzone ID="WebPartZone1" runat="server">
          <ZoneTemplate>
            <irow:RowProviderWebPart ID="provider1" runat="server"
 
              Title="Row Provider Control" />
            <irow:RowConsumerWebPart ID="consumer1" runat="server"
 
              Title="Row Consumer Control" />
          </ZoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>

ブラウザページ読み込みます。コンシューマ コントロールは、IWebPartRow インターフェイスインスタンス通じてプロバイダ使用できるようにした、指定の行から取得したデータ表示します

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
IWebPartRow メンバ
System.Web.UI.WebControls.WebParts 名前空間
WebPartConnection
IWebPartField インターフェイス
IWebPartTable
その他の技術情報
ASP.NET Web パーツ ページ
Web パーツ接続概要



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

辞書ショートカット

すべての辞書の索引

「IWebPartRow インターフェイス」の関連用語

IWebPartRow インターフェイスのお隣キーワード
検索ランキング

   

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



IWebPartRow インターフェイスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2025 GRAS Group, Inc.RSS