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

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

IWebPartTable インターフェイス

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

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

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

Dim instance As IWebPartTable
public interface IWebPartTable
public interface class IWebPartTable
public interface IWebPartTable
public interface IWebPartTable
解説解説

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

IWebPartTable インターフェイスは、データ テーブル基づいて接続作成するための標準インターフェイスとして Web パーツ コントロール セット含まれるプロバイダ インターフェイスです。カスタムインターフェイス作成して Web パーツ接続使用することもできますが、多くデータ ドリブン Web アプリケーションでは、共通のフィールド (詳細については、IWebPartField インターフェイストピック参照)、データ (詳細については、IWebPartRow インターフェイストピック参照)、またはデータ ソーステーブルに基づく接続作成すると便利です。一般的な接続では、プロバイダとして機能する WebPart コントロールIWebPartTable インターフェイス実装し、このインターフェイスインスタンスを、特殊なコールバック メソッドによってコンシューマ提供します。たとえば、プロバイダが、財務実績データ格納されているテーブルIWebPartTable インターフェイス実装しているとしますコンシューマとして機能する別の WebPart コントロールは、このインターフェイス インスタンス受け取特殊なメソッド定義しデータ抽出してグラフレンダリングし、結果として得られ情報表示できます

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

使用例使用例

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

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

コード例実行するためには、このソース コードコンパイルする必要があります。それを明示的にコンパイルし、コンパイル済みアセンブリ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 table data.
  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public NotInheritable Class
 TableProviderWebPart
    Inherits WebPart
    Implements IWebPartTable
    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


    Public ReadOnly Property
 Schema() As _
      ComponentModel.PropertyDescriptorCollection Implements IWebPartTable.Schema

      Get
        Return TypeDescriptor.GetProperties(_table.DefaultView(0))
      End Get

    End Property


    Public Sub GetTableData(ByVal
 callback As TableCallback) _
      Implements IWebPartTable.GetTableData

      callback(_table.Rows)

    End Sub


    Public Property ConnectionPointEnabled()
 As Boolean
      Get
        Dim o As Object
 = ViewState("ConnectionPointEnabled")
        Return IIf(Not (o Is
 Nothing), CBool(o), True)
      End Get
      Set(ByVal value As
 Boolean)
        ViewState("ConnectionPointEnabled") = value
      End Set
    End Property


    <ConnectionProvider("Table", GetType(TableProviderConnectionPoint),
 _
      AllowsMultipleConnections:=True)> _
    Public Function GetConnectionInterface()
 As IWebPartTable

      Return New TableProviderWebPart()

    End Function

  End Class 'TableProviderWebPart

  ' The connection point for the provider control.
  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class TableProviderConnectionPoint
    Inherits ProviderConnectionPoint

    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


    Public Overrides Function
 GetEnabled(ByVal control _
      As Control) As Boolean

      Return CType(control, TableProviderWebPart).ConnectionPointEnabled

    End Function
  End Class


  ' This code sample creates a Web Parts control that acts as a consumer
 
  ' of information provided by the TableProvider.ascx control.
  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class TableConsumer
    Inherits WebPart
    Private _provider As IWebPartTable
    Private _tableData As ICollection


    Private Sub GetTableData(ByVal
 tableData As ICollection)
      _tableData = CType(tableData, ICollection)

    End Sub


    Protected Overrides Sub
 OnPreRender(ByVal e As EventArgs)
      If Not (_provider Is
 Nothing) Then
        _provider.GetTableData(New TableCallback(AddressOf
 GetTableData))
      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))
            Next o
            writer.WriteBreak()
            writer.WriteLine()
            count = count + 1
          Next prop
        Else
          writer.Write("No data")
        End If
      Else
        writer.Write("Not connected")
      End If

    End Sub


    <ConnectionConsumer("Table")> _
    Public Sub SetConnectionInterface(ByVal
 provider As IWebPartTable)
      _provider = provider

    End Sub

  End Class 'TableConsumer

  ' The connection point for the consumer control.
  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class TableConsumerConnectionPoint
    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
  End Class 'TableConsumerConnectionPoint

End Namespace  ' Samples.AspNet.CS.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 table data.
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
    public sealed class TableProviderWebPart
 : WebPart, IWebPartTable
    {
        DataTable _table;

        public TableProviderWebPart()
        {
            _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);
        }

        public PropertyDescriptorCollection Schema
        {
            get
            {
                return TypeDescriptor.GetProperties(_table.DefaultView[0]);
            }
        }

        public void GetTableData(TableCallback
 callback)
        {
                callback(_table.Rows);
        }

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

        [ConnectionProvider("Table", typeof(TableProviderConnectionPoint),
 
      AllowsMultipleConnections = true)]
        public IWebPartTable GetConnectionInterface()
        {
            return new TableProviderWebPart();
        }

        public class TableProviderConnectionPoint
 : ProviderConnectionPoint
        {
            public TableProviderConnectionPoint(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 ((TableProviderWebPart)control).ConnectionPointEnabled;
            }

        }

    }


  // This code sample creates a Web Parts control that acts as a consumer
 
  // of information provided by the TableProvider.ascx control.
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class TableConsumer : WebPart
  {
    private IWebPartTable _provider;
    private ICollection _tableData;

    private void GetTableData(object tableData)
    {
      _tableData = (ICollection)tableData;
    }

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

    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("Table")]
    public void SetConnectionInterface(IWebPartTable
 provider)
    {
      _provider = provider;
    }

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

    } // TableConsumerConnectionPoint

  } // TableConsumer

} // 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>

ブラウザページ読み込みます。コンシューマ コントロールは、プロバイダIWebPartTable インターフェイスインスタンス通じて提供する特定のテーブルからのデータ表示します

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



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

辞書ショートカット

すべての辞書の索引

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

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

   

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



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

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

©2025 GRAS Group, Inc.RSS