ConnectionProviderAttribute 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
웹 파트 연결에서 공급자 역할을 하는 서버 컨트롤의 콜백 메서드를 식별하고 개발자가 공급자의 연결 지점에 대한 세부 사항을 지정할 수 있도록 합니다.
public ref class ConnectionProviderAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public class ConnectionProviderAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type ConnectionProviderAttribute = class
inherit Attribute
Public Class ConnectionProviderAttribute
Inherits Attribute
- 상속
- 특성
예제
다음 코드 예제에서는 공급자 컨트롤의 ConnectionProviderAttribute 콜백 메서드에서 메타데이터 요소를 선언 ConnectionProviderAttribute
하는 방법을 보여 줌으로써 클래스를 사용하는 방법을 보여 줍니다. 생성자의 가장 간단한 오버로드가 사용됩니다. displayName
매개 변수 값만 제공됩니다.
[ConnectionProvider("Row")]
public IWebPartRow GetConnectionInterface()
{
return new RowProviderWebPart();
}
<ConnectionProvider("Row")> _
Public Function GetConnectionInterface() As IWebPartRow
Return New RowProviderWebPart()
End Function 'GetConnectionInterface
다음 코드 예제에서는 클래스를 사용 하 여 WebPartConnection 두 웹 파트 컨트롤 간에 기본 정적 연결을 만드는 방법을 보여 줍니다. 공급자 및 소비자 코드 파일을 App_Code 폴더.aspx 페이지를 포함 하는 애플리케이션 폴더에 넣어야 합니다.
첫 번째 예제에서는 공급자 역할을 하는 클래스를 보여줍니다. 메서드는 메타데이터 요소를 사용하여 콜백 메서드로 ConnectionProviderAttribute
지정됩니다.
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
두 번째 예제에서는 소비자 역할을 하는 클래스를 보여줍니다.
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 페이지를 보여 줍니다.
<%@ 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 데이터를 공유하는 두 개의 서버 컨트롤로 구성됩니다. 인터페이스 인스턴스를 제공하는 컨트롤을 공급자라고 하며 인터페이스 인스턴스를 수신하고 데이터를 처리하거나 표시하는 컨트롤을 소비자라고 합니다. 연결에 대한 자세한 내용은 클래스 및 웹 파트 연결 개요를 참조 WebPartConnection 하세요.
연결의 공급자 컨트롤은 컨트롤 또는 모든 유형의 서버 또는 사용자 컨트롤일 WebPart 수 있지만 콜백 메서드로 지정된 메서드가 있어야 합니다. 콜백 메서드는 연결 프로세스 중에 호출되며, 그 목적은 데이터를 포함하는 인터페이스 인스턴스를 소비자에게 반환하는 것입니다. 공급자에서 콜백 메서드 역할을 하는 메서드를 지정하려면 메서드에 메타데이터 요소를 추가 ConnectionProviderAttribute
해야 합니다(요소는 클래스를 기반으로 ConnectionProviderAttribute 합니다).
공급자에서 콜백 메서드를 지정하는 것 외에도 개체를 사용하면 공급자 ConnectionProviderAttribute 의 연결점에 대한 특정 세부 정보를 지정할 수 있습니다. 공급자 연결 지점은 공급자의 ProviderConnectionPoint 컨트롤 형식, 동시에 여러 소비자에 연결할 수 있는지 여부, 공급자가 소비자에게 제공하는 인터페이스 유형, 콜백 메서드에 대한 세부 정보 및 UI(사용자 인터페이스)의 공급자 연결 지점을 나타내는 표시 이름을 포함하여 연결을 설정하는 데 필요한 공급자에 대한 모든 세부 정보를 캡슐화하는 클래스의 인스턴스입니다. 모든 웹 파트 연결에는 공급자 컨트롤과 연결된 공급자 연결 지점이 포함됩니다.
공급자의 ConnectionProviderAttribute
콜백 메서드에 메타데이터 요소를 추가할 때 공급자 연결 지점에 대한 다음 세부 정보를 지정할 수도 있습니다. 연결 지점의 표시 이름(자세한 내용은 속성 참조 DisplayName ), 공급자가 동시에 여러 소비자에 연결할 수 있는지 여부(자세한 내용은 속성 참조 AllowsMultipleConnections ). 연결점에 대한 ID(자세한 내용은 속성 참조 ID ) 및 공급자가 사용하는 연결 지점의 유형(자세한 내용은 속성 참조 ConnectionPointType )입니다. 클래스에 대한 ConnectionProviderAttribute 생성자의 4개 오버로드에는 각각 클래스의 새 인스턴스를 만들 때 이러한 연결점 속성 중 하나 이상의 값을 지정할 수 있는 매개 변수가 있습니다. 공급자 연결 지점에 대한 대부분의 속성은 프로그래밍 방식으로 설정할 수도 있습니다. 요소를 사용하여 ConnectionProviderAttribute
설정하는 것은 선택 사항입니다.
참고
공급자의 ConnectionProviderAttribute
콜백 메서드에 메타데이터 요소를 추가할 때 항상 지정해야 하는 유일한 필수 매개 변수는 매개 변수입니다 displayName
(자세한 내용은 생성자 오버로드 참조 ConnectionProviderAttribute(String) ). 이 매개 변수의 값은 속성에 DisplayName 할당되며 사용자가 연결 UI를 열면(컨트롤에서 ConnectionsZone 만든) 표시 이름은 UI의 공급자 연결 지점을 나타냅니다. 공급자 컨트롤에서 여러 콜백 메서드를 지정하는 경우 선택할 수 있는 연결점이 여러 개 있으며, 각 콜백 메서드에 메타데이터 요소를 추가할 ConnectionProviderAttribute
때 각 공급자 연결 지점에 알려진 고유 식별자가 있도록 매개 변수 값 id
도 지정해야 합니다.
생성자
ConnectionProviderAttribute(String) |
공급자 연결 지점의 표시 이름을 지정하여 ConnectionProviderAttribute 클래스의 새 인스턴스를 초기화합니다. |
ConnectionProviderAttribute(String, String) |
공급자 연결 지점의 표시 이름과 ID를 지정하여 ConnectionProviderAttribute 클래스의 새 인스턴스를 초기화합니다. |
ConnectionProviderAttribute(String, String, Type) |
공급자 연결 지점에 사용할 연결 지점 개체의 표시 이름, ID 및 특정 형식을 지정하는 ConnectionProviderAttribute 클래스의 새 인스턴스를 초기화합니다. |
ConnectionProviderAttribute(String, Type) |
공급자 연결 지점에 사용할 표시 이름 및 연결 지점 개체의 특정 형식을 지정하여 ConnectionProviderAttribute 클래스의 새 인스턴스를 초기화합니다. |
속성
AllowsMultipleConnections |
연결 지점에서 여러 연결이 허용되는지 여부를 나타내는 값을 가져오거나 설정합니다. |
ConnectionPointType |
공급자 컨트롤과 관련된 연결 지점의 형식을 가져옵니다. |
DisplayName |
공급자 연결 지점의 이름을 가져옵니다. |
DisplayNameValue |
지역화 시나리오에서 사용할 경우 DisplayName 속성 값으로 사용되는 문자열을 가져오거나 설정합니다. |
ID |
공급자 연결 지점 개체의 고유 ID를 나타내는 문자열을 가져옵니다. |
TypeId |
파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다. (다음에서 상속됨 Attribute) |
메서드
Equals(Object) |
이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다. (다음에서 상속됨 Attribute) |
GetHashCode() |
이 인스턴스의 해시 코드를 반환합니다. (다음에서 상속됨 Attribute) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
IsDefaultAttribute() |
파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다. (다음에서 상속됨 Attribute) |
Match(Object) |
파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다. (다음에서 상속됨 Attribute) |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
명시적 인터페이스 구현
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다. (다음에서 상속됨 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다. (다음에서 상속됨 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1). (다음에서 상속됨 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다. (다음에서 상속됨 Attribute) |
적용 대상
추가 정보
.NET