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

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

ConnectionProviderAttribute クラス

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

Web パーツ接続プロバイダとして機能するサーバー コントロールコールバック メソッド識別し開発者プロバイダコネクション ポイント詳細指定できるようにします。

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

<AttributeUsageAttribute(AttributeTargets.Method)> _
Public Class ConnectionProviderAttribute
    Inherits Attribute
Dim instance As ConnectionProviderAttribute
[AttributeUsageAttribute(AttributeTargets.Method)] 
public class ConnectionProviderAttribute :
 Attribute
[AttributeUsageAttribute(AttributeTargets::Method)] 
public ref class ConnectionProviderAttribute
 : public Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Method) */ 
public class ConnectionProviderAttribute extends
 Attribute
AttributeUsageAttribute(AttributeTargets.Method) 
public class ConnectionProviderAttribute extends
 Attribute
解説解説

Web パーツ接続は、WebPartZoneBase ゾーンにある 2 つサーバー コントロールによって形成され、これらのサーバー コントロールは、一方コントロールからもう一方コントロール渡されるインターフェイス インスタンス通じてデータ共有しますインターフェイス インスタンス提供するコントロールプロバイダ呼ばれインターフェイス インスタンス受け取ってデータの処理表示を行うコントロールコンシューマ呼ばれます接続詳細については、WebPartConnection クラストピックおよび「Web パーツ接続概要」を参照してください

接続におけるプロバイダ コントロールは、WebPart コントロールか任意の型のサーバー コントロールまたはユーザー コントロールですが、コールバック メソッドとして指定されメソッド持っている必要がありますコールバック メソッド接続プロセス中に呼び出されデータ格納しているインターフェイス インスタンスコンシューマ返しますプロバイダコールバック メソッドとして機能するメソッド指定するには、メソッドConnectionProviderAttribute メタデータ要素追加する必要があります (この要素は、ConnectionProviderAttribute クラス基づいています)。

ConnectionProviderAttribute オブジェクト使用すると、プロバイダコールバック メソッドだけでなく、プロバイダコネクション ポイント特定の詳細指定できますプロバイダ コネクション ポイントは ProviderConnectionPoint クラスインスタンスで、接続確立するために必要なプロバイダに関するすべての詳細カプセル化ます。この詳細には、プロバイダコントロール種類プロバイダ複数コンシューマ同時に接続できるかどうかプロバイダコンシューマ提供するインターフェイス型コールバック メソッド詳細、および、ユーザー インターフェイス (UI) でプロバイダ コネクション ポイントを表す表示名含まれます。すべての Web パーツ接続には、プロバイダ コントロール関連付けられているプロバイダ コネクション ポイントあります

プロバイダコールバック メソッドConnectionProviderAttribute メタデータ要素追加するときは、これを使用してプロバイダ コネクション ポイント詳細指定できます。この詳細には、コネクション ポイント表示名 (詳細については、DisplayName プロパティトピック参照)、プロバイダ複数コンシューマ同時に接続できるかどうか (詳細については、AllowsMultipleConnections プロパティトピック参照)、コネクション ポイントID (詳細については、ID プロパティトピック参照)、および、プロバイダ使用するコネクション ポイント種類 (詳細については、ConnectionPointType プロパティトピック参照) が含まれます。ConnectionProviderAttribute クラスコンストラクタ4 つオーバーロードにはそれぞれパラメータあります。これらのパラメータ使用すると、クラス新しインスタンス作成するときにコネクション ポイントのこれらのプロパティの値を 1 つ以上指定できますまた、プロバイダ コネクション ポイントプロパティ多くは、プログラムによって設定できます。これらのプロパティは、必要に応じてConnectionProviderAttribute 要素使用して設定できます

メモメモ

プロバイダコールバック メソッドConnectionProviderAttribute メタデータ要素追加する場合、常に指定する必要がある唯一の必須パラメータdisplayName パラメータです (詳細については、ConnectionProviderAttribute(String) コンストラクタ オーバーロードトピック参照してください)。このパラメータの値は DisplayName プロパティ割り当てられます。ユーザーが (ConnectionsZone コントロールによって作成される) 接続 UI を開くと、プロバイダ コネクション ポイントを表すこの表示名UI表示されます。プロバイダ コントロール複数コールバック メソッド指定した場合は、選択できるコネクション ポイントプロバイダが複数存在することになりますその場合は、各コールバック メソッドConnectionProviderAttribute メタデータ要素追加するときに id パラメータの値も指定して、各プロバイダ コネクション ポイント既知一意識別子を持つようにする必要があります

使用例使用例

ConnectionProviderAttribute クラス使用するコード例次に示します。この例は、プロバイダ コントロールコールバック メソッドConnectionProviderAttribute メタデータ要素宣言する方法示してます。displayName パラメータ値だけが指定された、最も簡単なコンストラクタオーバーロード使用されています。

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

End Function 'GetConnectionInterface
[ConnectionProvider("Row")]
public IWebPartRow GetConnectionInterface()
{
    return new RowProviderWebPart();
}

WebPartConnection クラス使用して2 つWeb パーツ コントロール間で基本的な静的接続作成する方法次のコード例示しますプロバイダコンシューマコード ファイルは、.aspx ページ格納しているアプリケーション フォルダの下の App_Code フォルダ格納する必要があります

最初の例は、プロバイダとして機能するクラス示してます。1 つメソッドが、ConnectionProviderAttribute メタデータ要素を持つコールバック メソッドとして指定されています。

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 MyCustomWebPart

    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.Rows)

        End Sub 'GetRowData
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 My 
{
    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);
        }
    }
}

2 番目の例は、コンシューマとして機能するクラス示してます。

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 consumer
 of row data.
Namespace MyCustomWebPart

    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 'GetRowData


        Protected Overrides Sub
 OnPreRender(ByVal e As EventArgs)
            If Not (_provider Is
 Nothing) Then
                '        _provider.GetRowData(AddressOf (New RowCallback(GetRowData)))
                _provider.GetRowData(AddressOf GetRowData)
                '    _provider.GetRowData(New RowCallback(AddressOf
 GetRowData))
            End If

        End Sub 'OnPreRender



        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 'RenderContents

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

        End Sub 'SetConnectionInterface

    '}
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 consumer
 of row data.
namespace My 
{

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

最後の例は、2 つコントロールを含む ASP.NET ページ示してます。

<%@ page language="VB" %>
<%@ Register TagPrefix=my Namespace=MyCustomWebPart %>

<html>
<head runat="server">
    <title>IRow Test Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <!-- A static or dynamic connection
 is required to link two Web Parts controls.
 --->
        <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>
                <my:RowProviderWebPart ID=provider1 runat=server Title="Row
 Provider Control" />
                <my:RowConsumerWebPart ID=consumer1 runat=server Title="Row
 Consumer Control" />
           </ZoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>
<%@ page language="C#" %>
<%@ register TagPrefix="my" Namespace="My" %>

<html>
<head runat="server">
    <title>IRow Test Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <!-- A static or dynamic connection is required to
 link two Web Parts controls. --->
        <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>
                <!-- The following two lines specify the two connected controls.
 --->
                <my:RowProviderWebPart ID=provider1 runat=server Title="Row
 Provider Control" />
                <my:RowConsumerWebPart ID=consumer1 runat=server Title="Row
 Consumer Control" />
            </ZoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>
.NET Framework のセキュリティ.NET Frameworkセキュリティ
継承階層継承階層
System.Object
   System.Attribute
    System.Web.UI.WebControls.WebParts.ConnectionProviderAttribute
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ConnectionProviderAttribute メンバ
System.Web.UI.WebControls.WebParts 名前空間
WebPartConnection
ConnectionPoint クラス
ProviderConnectionPoint
ConnectionConsumerAttribute クラス
その他の技術情報
ASP.NET Web パーツ ページ
Web パーツ ページ保護
Web パーツ接続概要



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

辞書ショートカット

すべての辞書の索引

「ConnectionProviderAttribute クラス」の関連用語

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

   

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



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

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

©2024 GRAS Group, Inc.RSS