RowToFieldTransformer 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
IWebPartRow 인터페이스를 통해 데이터를 기대하는 소비자에게 IWebPartField 인터페이스를 구현해 주는 공급자에서 웹 파트 연결의 데이터를 변환합니다.
public ref class RowToFieldTransformer sealed : System::Web::UI::WebControls::WebParts::WebPartTransformer, System::Web::UI::WebControls::WebParts::IWebPartField
[System.Web.UI.WebControls.WebParts.WebPartTransformer(typeof(System.Web.UI.WebControls.WebParts.IWebPartRow), typeof(System.Web.UI.WebControls.WebParts.IWebPartField))]
public sealed class RowToFieldTransformer : System.Web.UI.WebControls.WebParts.WebPartTransformer, System.Web.UI.WebControls.WebParts.IWebPartField
[<System.Web.UI.WebControls.WebParts.WebPartTransformer(typeof(System.Web.UI.WebControls.WebParts.IWebPartRow), typeof(System.Web.UI.WebControls.WebParts.IWebPartField))>]
type RowToFieldTransformer = class
inherit WebPartTransformer
interface IWebPartField
Public NotInheritable Class RowToFieldTransformer
Inherits WebPartTransformer
Implements IWebPartField
- 상속
- 특성
- 구현
예제
다음 코드 예제를 사용 하는 방법에 설명 된 RowToFieldTransformer 호환 되지 않는 연결점을 사용 하 여 공급자 및 소비자를 연결 하는 개체입니다. 예제의 첫 번째 섹션에는 공급자 역할을 하는 웹 파트 컨트롤을 보여 줍니다. 라는 공급자 클래스는 RowProviderWebPart
를 통해 데이터를 제공 합니다 IWebPartRow 인터페이스입니다.
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 Samples.AspNet.CS.Controls
{
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.DefaultView[0]);
}
}
}
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 Samples.AspNet.VB.Controls
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.DefaultView(0))
End Sub
End Class
End Namespace
예제의 두 번째 섹션에는 웹 파트 연결의 소비자는 웹 파트 컨트롤을 포함 합니다. 명명 된 소비자 클래스 FieldConsumerWebPart
에서 데이터를 필요로 합니다 IWebPartField 인터페이스입니다.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Web;
using System.Web.UI;
using System.Security.Permissions;
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 consumer of an IField interface.
// A consumer WebPart control that consumes strings.
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class FieldConsumerWebPart : WebPart
{
private IWebPartField _provider;
private object _fieldValue;
private void GetFieldValue(object fieldValue)
{
_fieldValue = fieldValue;
}
public bool ConnectionPointEnabled
{
get
{
object o = ViewState["ConnectionPointEnabled"];
return (o != null) ? (bool)o : true;
}
set
{
ViewState["ConnectionPointeEnabled"] = value;
}
}
protected override void OnPreRender(EventArgs e)
{
if (_provider != null)
{
_provider.GetFieldValue(new FieldCallback(GetFieldValue));
}
base.OnPreRender(e);
}
protected override void RenderContents(HtmlTextWriter writer)
{
if (_provider != null)
{
PropertyDescriptor prop = _provider.Schema;
if (prop != null && _fieldValue != null)
{
writer.Write(prop.DisplayName + ": " + _fieldValue);
}
else
{
writer.Write("No data");
}
}
else
{
writer.Write("Not connected");
}
}
[ConnectionConsumer("Field")]
public void SetConnectionInterface(IWebPartField provider)
{
_provider = provider;
}
private class FieldConsumerConnectionPoint : ConsumerConnectionPoint
{
public FieldConsumerConnectionPoint(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 ((FieldConsumerWebPart)control).ConnectionPointEnabled;
}
}
}
}
Imports System.ComponentModel
Imports System.Reflection
Imports System.Collections
Imports System.Data
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 consumer of an IField interface.
Public Class FieldConsumerWebPart
Inherits WebPart
Private _provider As IWebPartField
Private _fieldValue As Object
Private Sub GetFieldValue(ByVal fieldValue As Object)
_fieldValue = fieldValue
End Sub
Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
If Not (_provider Is Nothing) Then
_provider.GetFieldValue((New FieldCallback(AddressOf GetFieldValue)))
End If
MyBase.OnPreRender(e)
End Sub
Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter)
If Not (_provider Is Nothing) Then
Dim prop As PropertyDescriptor = _provider.Schema
If Not (prop Is Nothing) AndAlso Not (_fieldValue Is Nothing) Then
writer.Write(prop.DisplayName & ": " & _fieldValue)
Else
writer.Write("No data")
End If
Else
writer.Write("Not connected")
End If
End Sub
<ConnectionConsumer("Field")> _
Public Sub SetConnectionInterface(ByVal provider As IWebPartField)
_provider = provider
End Sub
Private Class FieldConsumerConnectionPoint
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
End Class
예제의 세 번째 섹션에는 두 개의 포함 된 페이지를 제어 하 고 정의 표시는 RowToFieldTransformer 두 개의 연결에 대 한 개체입니다.
<%@ Page Language="C#" %>
<%@ register tagprefix="uc1"
tagname="DisplayModeMenuCS"
src="~/displaymodemenucs.ascx" %>
<%@ Register TagPrefix="wp"
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">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:webpartmanager id="manager" runat="server">
<staticconnections>
<asp:WebPartConnection ID="conn1" ProviderID="rp1" ConsumerID="fc1">
<asp:RowToFieldTransformer FieldName="Zip Code"/>
</asp:WebPartConnection>
</staticconnections>
</asp:webpartmanager>
<uc1:displaymodemenucs id="menu1" runat="server" />
<table>
<tr valign="top">
<td>
<asp:webpartzone id="zone1" headertext="zone1" runat="server">
<zonetemplate>
<wp:RowProviderWebPart Title="provider" ID="rp1" runat="server" />
<wp:FieldConsumerWebPart Title="consumer" ID="fc1" runat="server" />
</zonetemplate>
</asp:webpartzone>
</td>
<td>
<asp:connectionszone id="connectionszone1" runat="server" />
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ register tagprefix="uc1"
tagname="DisplayModeMenuVB"
src="~/displaymodemenuvb.ascx" %>
<%@ Register TagPrefix="wp"
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">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:webpartmanager id="manager" runat="server">
<staticconnections>
<asp:WebPartConnection ID="conn1" ProviderID="rp1" ConsumerID="fc1">
<asp:RowToFieldTransformer FieldName="Zip Code"/>
</asp:WebPartConnection>
</staticconnections>
</asp:webpartmanager>
<uc1:displaymodemenuvb id="menu1" runat="server" />
<table>
<tr valign="top">
<td>
<asp:webpartzone id="zone1" headertext="zone1" runat="server">
<zonetemplate>
<wp:RowProviderWebPart Title="provider" ID="rp1" runat="server" />
<wp:FieldConsumerWebPart Title="consumer" ID="fc1" runat="server" />
</zonetemplate>
</asp:webpartzone>
</td>
<td>
<asp:connectionszone id="connectionszone1" runat="server" />
</td>
</tr>
</table>
</form>
</body>
</html>
코드 예제에서는 웹 파트 페이지의 디스플레이 모드를 변경할 수 있게 해 주는 사용자 정의 컨트롤을 포함 합니다. 사용자 정의 컨트롤에 대 한 소스 코드는 다른 항목에서 제공 됩니다. 사용자 컨트롤은.ascx 파일을 가져올 수 있습니다 연습: 웹 파트 페이지에서 디스플레이 모드 변경, 및.aspx 페이지와 같은 폴더에 배치 해야 합니다.
설명
변환기는 호환 되지 않는 연결점을 사용 하 여 두 웹 파트 컨트롤 간에 데이터를 변환 하는 데 사용 됩니다. A RowToFieldTransformer 구현 하는 공급자에서 데이터를 변환 하는 개체를 IWebPartRow 인터페이스에서 데이터를 요구 하는 소비자에 게는 IWebPartField 인터페이스입니다. RowToFieldTransformer 연결할 호환 되지 않는 이러한 연결점을 사용 하 여 컨트롤 클래스를 사용 하면 됩니다.
생성자
RowToFieldTransformer() |
RowToFieldTransformer 클래스의 새 인스턴스를 초기화합니다. |
속성
FieldName |
변환할 값의 이름을 가져오거나 설정합니다. |
메서드
CreateConfigurationControl() |
RowToFieldTransformer 변환기를 구성하는 ASP.NET 컨트롤을 ConnectionsZone 영역에 표시합니다. |
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
LoadConfigurationState(Object) |
SaveConfigurationState() 메서드를 사용하여 저장된 구성 상태를 로드합니다. (다음에서 상속됨 WebPartTransformer) |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
SaveConfigurationState() |
ASP.NET 구성 컨트롤에서 사용자가 설정한 구성 상태를 저장합니다. (다음에서 상속됨 WebPartTransformer) |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
Transform(Object) |
데이터를 변환하기 위한 개체를 제공합니다. |
명시적 인터페이스 구현
IWebPartField.GetFieldValue(FieldCallback) |
두 웹 파트 컨트롤 간 연결 기반으로 인터페이스에서 사용되는 필드의 값을 반환합니다. |
IWebPartField.Schema |
두 웹 파트 컨트롤 간에 데이터를 공유하는 데 사용되는 데이터 필드에 대한 스키마 정보를 가져옵니다. |