ConnectionConsumerAttribute 클래스

정의

웹 파트 연결에서 소비자 역할을 하는 서버 컨트롤의 콜백 메서드를 식별하고 개발자가 소비자의 연결 지점에 대한 세부 사항을 지정할 수 있도록 합니다.Identifies the callback method in a server control acting as the consumer in a Web Parts connection, and enables developers to specify details about the consumer's connection point.

public ref class ConnectionConsumerAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public class ConnectionConsumerAttribute : Attribute
type ConnectionConsumerAttribute = class
    inherit Attribute
Public Class ConnectionConsumerAttribute
Inherits Attribute
상속
ConnectionConsumerAttribute
특성

예제

다음 코드 예제에서는 합니다 ConnectionConsumerAttribute 클래스를 선언 하는 방법을 보여 주는 ConnectionConsumerAttribute 소비자 컨트롤의 콜백 메서드에 대 한 메타 데이터 요소.The following code example demonstrates using the ConnectionConsumerAttribute class, by showing how to declare the ConnectionConsumerAttribute metadata element on a callback method in a consumer control. 생성자의 가장 간단한 오버 로드를; 사용 만 displayName 매개 변수 값을 제공 합니다.Note that the simplest overload of the constructor is used; only the displayName parameter value is supplied.

[ConnectionConsumer("Row")]
public void SetConnectionInterface(IWebPartRow provider) 
{
    _provider = provider;
}
    <ConnectionConsumer("Row")> _
    Public Sub SetConnectionInterface(ByVal provider As IWebPartRow)
        _provider = provider

    End Sub
End Class

다음 코드 예제를 사용 하 여 두 웹 파트 컨트롤 사이의 기본 정적 연결을 만드는 방법을 보여 줍니다는 WebPartConnection 클래스입니다.The following code examples demonstrate how to create a basic, static connection between two Web Parts controls using the WebPartConnection class. 공급자 및 소비자 코드 파일을 App_Code 폴더.aspx 페이지를 포함 하는 애플리케이션 폴더에 넣어야 합니다.The provider and consumer code files should be put into the App_Code folder under the application folder that contains the .aspx page.

첫 번째 예제에서는 공급자 역할을 하는 클래스를 보여 줍니다.The first example shows a class acting as a provider.

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

        <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
    End Class

두 번째 예제에서는 소비자 역할을 하는 클래스를 보여 줍니다.The second example shows a class acting as a consumer. 사용 하 여 콜백 메서드로 지정 되어 있는지 확인 합니다 ConnectionConsumerAttribute 메타 데이터 요소입니다.Notice that a method is designated as the callback method with the ConnectionConsumerAttribute metadata element.

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


        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



        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

마지막 예에서는 두 개의 컨트롤을 포함 하는 ASP.NET 페이지를 보여 줍니다.The final example shows the ASP.NET page that contains the two controls.

<%@ page language="C#" %>
<%@ register TagPrefix="my" Namespace="My" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<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" ToolTip="Row Provider Control" />
                <my:RowConsumerWebPart ID="consumer1" runat="server" ToolTip="Row Consumer Control" />
            </ZoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>
<%@ page language="VB" %>
<%@ Register TagPrefix="my" Namespace="MyCustomWebPart" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<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" ToolTip="Row Provider Control" />
                <my:RowConsumerWebPart ID="consumer1" runat="server" ToolTip="Row Consumer Control" />
           </ZoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>

설명

웹 파트 연결 구성에 있는 두 서버 컨트롤을 WebPartZoneBase 영역 인터페이스 인스턴스를 사용 하 여 데이터를 공유 하 고 다른 한 컨트롤에서 전달 합니다.A Web Parts connection consists of two server controls residing in a WebPartZoneBase zone and sharing data by means of an interface instance passed from one control to the other. 인터페이스 인스턴스를 제공 하는 컨트롤은 공급자를, 인터페이스 인스턴스 및 프로세스를 수신 하거나 데이터를 표시 하는 컨트롤 소비자 라고 합니다.The control that serves the interface instance is called the provider, and the control that receives the interface instance and processes or displays the data is called the consumer. 연결에 대 한 내용은 참조는 WebPartConnection 클래스 및 웹 파트 연결 개요합니다.For details on connections, see the WebPartConnection class and Web Parts Connections Overview.

연결에서 소비자 컨트롤 수를 WebPart 컨트롤 또는 다른 종류 하지만 서버 또는 사용자 정의 컨트롤의 콜백 메서드로 지정 된 메서드가 있어야 합니다.The consumer control in a connection can be a WebPart control or any type of server or user control, but it must have a method designated as a callback method. 연결 과정에서 콜백 메서드는 호출 및 공급자에서 데이터를 포함 하는 인터페이스 인스턴스를 수신 하기 위한 것입니다.The callback method is invoked during the connection process, and its purpose is to receive from the provider an interface instance that contains data. 추가 소비자에서 콜백 메서드로 사용 되는 메서드를 지정 해야 합니다는 ConnectionConsumerAttribute 메서드에 대 한 메타 데이터 요소 (요소를 기반으로 합니다 ConnectionConsumerAttribute 클래스).To designate the method that serves as the callback method in a consumer, you must add a ConnectionConsumerAttribute metadata element to the method (the element is based on the ConnectionConsumerAttribute class).

소비자의 콜백 메서드를 지정 하는 것 외에도 ConnectionConsumerAttribute 개체 또한 소비자의 연결 지점에 대 한 특정 세부 정보를 지정할 수 있습니다.In addition to designating the callback method in a consumer, the ConnectionConsumerAttribute object also enables you to specify certain details about a consumer's connection point. 소비자 연결 지점과의 인스턴스인지를 ConsumerConnectionPoint 동시에 여러 공급자에 연결할 수 있는지 여부를 소비자의 컨트롤 형식을 포함 하 여 연결을 설정 하는 데 필요한 소비자에 대 한 모든 세부 정보를 캡슐화 하는 클래스 항목 소비자 인터페이스의 형식 공급자를 콜백 메서드 및 사용자 인터페이스 (UI)에서 소비자 연결 지점을 나타내는 표시 이름에 대 한 세부 정보에서 받을 수 있습니다.A consumer connection point is an instance of the ConsumerConnectionPoint class that encapsulates all the details about a consumer needed to establish a connection, including the consumer's control type, whether it can connect to multiple providers at the same time, what type of interface the consumer can receive from a provider, details about the callback method, and a display name that represents the consumer connection point in the user interface (UI). 모든 웹 파트 연결 소비자 컨트롤과 연결 된 소비자 연결 지점이 포함 됩니다.Every Web Parts connection includes a consumer connection point that is associated with the consumer control.

추가 하는 경우는 ConnectionConsumerAttribute 소비자의 콜백 메서드를 메타 데이터 요소를 사용할 수 있습니다도 소비자 연결 지점에 대 한 다음 정보를 지정할 수: 연결 지점의 표시 이름 (세부 정보를 참조 하세요.를 DisplayName 속성), 동시 소비자 여러 공급자에 연결할 수 있는지 여부 (세부 정보를 참조 하세요. 합니다 AllowsMultipleConnections 속성), 연결 지점에 대 한 ID (세부 정보를 참조 하세요.를 ID 속성), (소비자는 연결점의 형식과 자세한 내용은 참조는 ConnectionPointType 속성).When you add the ConnectionConsumerAttribute metadata element to the callback method in a consumer, you can also use it to specify the following details about the consumer connection point: a display name for the connection point (for details, see the DisplayName property), whether the consumer can connect to multiple providers at the same time (for details, see the AllowsMultipleConnections property), an ID for the connection point (for details, see the ID property), and the type of the connection point that the consumer uses (for details, see the ConnectionPointType property). 생성자의 네 가지 오버 로드는 ConnectionConsumerAttribute 각 클래스는 클래스의 새 인스턴스를 만들 때 하나 이상의 이러한 연결 지점 속성에 대 한 값을 지정할 수 있도록 하는 매개 변수가 있습니다.The four overloads of the constructor for the ConnectionConsumerAttribute class each have parameters that allow you to specify values for one or more of these connection point properties when a new instance of the class is created. 대부분의 소비자 연결점에 대 한 속성을 프로그래밍 방식으로 설정할 수도 있습니다. 설정 하를 사용 하 여 ConnectionConsumerAttribute 요소는 선택 사항입니다.Most of the properties for a consumer connection point can also be set programmatically; setting them using the ConnectionConsumerAttribute element is optional.

참고

추가 하는 경우는 ConnectionConsumerAttribute 메타 데이터 요소를 소비자에 콜백 메서드를 항상 지정 해야 하는 유일한 필수 매개 변수는 합니다 displayName 매개 변수 (세부 정보를 참조 하세요.를 ConnectionConsumerAttribute(String) 생성자 오버 로드).When you add the ConnectionConsumerAttribute metadata element to a callback method in a consumer, the only required parameter that you must always specify is the displayName parameter (for details, see the ConnectionConsumerAttribute(String) constructor overload). 이 매개 변수의 값에 할당 되는 DisplayName 속성인 경우 사용자가 연결 UI 및 (만든를 ConnectionsZone 컨트롤), 표시 이름을 나타내는 UI에서 소비자 연결 지점.The value of this parameter is assigned to the DisplayName property, and when a user opens the connection UI (created by the ConnectionsZone control), the display name represents the consumer connection point in the UI. 소비자 컨트롤의 콜백 메서드가 여러 개 지정 하면는 여러 가능한 연결 지점을 선택할 수 있고 추가 하는 경우는 ConnectionConsumerAttribute 각 콜백 메서드를 메타 데이터 요소 수에 대 한 값도 지정 해야 합니다 id 매개 변수를 각 소비자 연결 지점이 있도록 알려진된 고유한 식별자를 있습니다.If you designate multiple callback methods in a consumer control, you will have multiple possible connection points to choose from, and when you add the ConnectionConsumerAttribute metadata element to each callback method, you should also specify a value for the id parameter, so that each consumer connection point has a known, unique identifier.

생성자

ConnectionConsumerAttribute(String)

소비자 연결 지점의 표시 이름을 지정하여 ConnectionConsumerAttribute 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ConnectionConsumerAttribute class, specifying a display name for the consumer connection point.

ConnectionConsumerAttribute(String, String)

소비자 연결 지점의 표시 이름과 ID를 지정하여 ConnectionConsumerAttribute 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ConnectionConsumerAttribute class, specifying a display name and an ID for the consumer connection point.

ConnectionConsumerAttribute(String, String, Type)

소비자 연결 지점에 사용할 연결 지점 개체의 표시 이름, ID 및 특정 형식을 지정하는 ConnectionConsumerAttribute 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ConnectionConsumerAttribute class, specifying a display name, an ID, and a specific type of connection point object to use for the consumer connection point.

ConnectionConsumerAttribute(String, Type)

소비자 연결 지점에 사용할 표시 이름 및 연결 지점 개체의 특정 형식을 지정하여 ConnectionConsumerAttribute 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ConnectionConsumerAttribute class, specifying a display name and a specific type of connection point object to use for the consumer connection point.

속성

AllowsMultipleConnections

연결 지점에서 여러 연결이 허용되는지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value that indicates whether the connection point allows multiple connections.

ConnectionPointType

소비자 연결 지점의 연결 지점 형식을 가져옵니다.Gets the connection point type of the consumer connection point.

DisplayName

소비자 연결 지점의 이름을 가져옵니다.Gets the friendly name of the consumer connection point.

DisplayNameValue

지역화 시나리오에서 사용할 경우 DisplayName 속성 값으로 사용되는 문자열을 가져오거나 설정합니다.Gets or sets the string used as the value of the DisplayName property, for use in localization scenarios.

ID

소비자 연결 지점의 고유 ID를 나타내는 문자열을 가져옵니다.Gets a string that represents the unique identity of the consumer connection point.

TypeId

파생 클래스에서 구현될 때 이 Attribute의 고유 식별자를 가져옵니다.When implemented in a derived class, gets a unique identifier for this Attribute.

(다음에서 상속됨 Attribute)

메서드

Equals(Object)

이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다.Returns a value that indicates whether this instance is equal to a specified object.

(다음에서 상속됨 Attribute)
GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.Returns the hash code for this instance.

(다음에서 상속됨 Attribute)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
IsDefaultAttribute()

파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(다음에서 상속됨 Attribute)
Match(Object)

파생된 클래스에서 재정의할 경우,이 인스턴스가 지정된 된 개체와 같은지 여부를 나타내는 값을 반환 합니다.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(다음에서 상속됨 Attribute)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 string을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.Maps a set of names to a corresponding set of dispatch identifiers.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.Retrieves the type information for an object, which can be used to get the type information for an interface.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(다음에서 상속됨 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.Provides access to properties and methods exposed by an object.

(다음에서 상속됨 Attribute)

적용 대상

추가 정보