WebPartTransformer 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
호환되지 않는 두 연결 지점 간에 데이터를 변환하는 변환기 클래스에 대한 기본 구현을 제공합니다.
public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
- 상속
-
WebPartTransformer
- 파생
예제
다음 코드 예제에서는 클래스에서 WebPartTransformer 파생 되는 사용자 지정 된 변환기를 만드는 방법을 보여 줍니다. 이름이 지정된 RowToStringTransformer변환기를 사용하면 호환되지 않는 연결 지점이 있는 웹 파트 공급자와 웹 파트 소비자가 연결될 수 있습니다. 공급자는 형식의 데이터를 제공하지만 소비자는 형식IWebPartRowString의 데이터만 허용합니다. 클래스는 RowToStringTransformer 필요한 변환을 수행합니다.
코드 예제에는 공급자 또는 소비자의 구현이 포함되지 않습니다. 인터페이스를 구현하는 공급자와 예제가 IWebPartRow 작동하도록 명명 IString 된 사용자 지정 인터페이스를 통해 데이터를 기대하는 소비자를 만들어야 합니다.
// An interface that the transformer provides to the consumer.
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public interface IString
{
void GetStringValue(StringCallback callback);
}
' An interface that the transformer provides to the consumer.
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Interface IString
Sub GetStringValue(ByVal callback As StringCallback)
End Interface
코드 예제의 첫 번째 섹션에는 공급자 및 소비자 웹 파트 컨트롤에 대한 코드와 변환기의 코드가 포함되어 있습니다.
// A transformer that transforms a row to a string.
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
[WebPartTransformer(typeof(IWebPartRow), typeof(IString))]
public class RowToStringTransformer : WebPartTransformer, IString
{
private IWebPartRow _provider;
private StringCallback _callback;
private void GetRowData(object rowData)
{
PropertyDescriptorCollection props = _provider.Schema;
if (props != null && props.Count > 0 && rowData != null)
{
string returnValue = String.Empty;
foreach (PropertyDescriptor prop in props)
{
if (prop != props[0])
{
returnValue += ", ";
}
returnValue += prop.DisplayName + ": " + prop.GetValue(rowData);
}
_callback(returnValue);
}
else
{
_callback(null);
}
}
public override object Transform(object providerData)
{
_provider = (IWebPartRow)providerData;
return this;
}
void IString.GetStringValue(StringCallback callback)
{
if (callback == null)
{
throw new ArgumentNullException("callback");
}
if (_provider != null)
{
_callback = callback;
_provider.GetRowData(new RowCallback(GetRowData));
}
else
{
callback(null);
}
}
}
' A transformer that transforms a row to a string.
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<WebPartTransformer(GetType(IWebPartRow), GetType(IString))> _
Public Class RowToStringTransformer
Inherits WebPartTransformer
Implements IString
Private _provider As IWebPartRow
Private _callback As StringCallback
Private Sub GetRowData(ByVal rowData As Object)
Dim props As PropertyDescriptorCollection = _provider.Schema
If ((Not (props Is Nothing)) AndAlso (props.Count > 0) _
AndAlso (Not (rowData Is Nothing))) Then
Dim returnValue As String = String.Empty
For Each prop As PropertyDescriptor In props
If Not (prop Is props(0)) Then
returnValue += ", "
End If
returnValue += prop.DisplayName.ToString() + ": " + _
prop.GetValue(rowData).ToString()
Next
_callback(returnValue)
Else
_callback(Nothing)
End If
End Sub
Public Overrides Function Transform(ByVal providerData As Object) As Object
_provider = CType(providerData, IWebPartRow)
Return Me
End Function
Sub GetStringValue(ByVal callback As StringCallback) _
Implements IString.GetStringValue
If (callback Is Nothing) Then
Throw New ArgumentNullException("callback")
End If
If (Not (_provider Is Nothing)) Then
_callback = callback
_provider.GetRowData(New RowCallback(AddressOf GetRowData))
Else
callback(Nothing)
End If
End Sub
End Class
코드 예제의 두 번째 섹션에서는 개체에 대한 WebPartConnection 선언적 구문 내에 변환기를 포함하는 방법을 보여줍니다.
<%@ Page language="c#" trace="false" debug="true" %>
<%@ register tagprefix="uc1"
tagname="DisplayModeMenuCS"
src="~/displaymodemenucs.ascx" %>
<%@ Register TagPrefix="wp"
NameSpace="Samples.AspNet.CS.Controls" %>
<script runat="server">
</script>
<!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>
<title>Web Parts Transformer Sample Page</title>
</head>
<body>
<form id="Form1" runat="server">
<asp:webpartmanager id="manager" runat="server">
<staticconnections>
<asp:webpartconnection id="conn1" providerid="p1" consumerid="c1">
<wp:rowtostringtransformer />
</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 id="p1" runat="server" />
<wp:stringconsumerwebpart id="c1" 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" %>
<script runat="server">
</script>
<!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>
<title>Web Parts Transformers Sample Page</title>
</head>
<body>
<form id="Form1" runat="server">
<asp:webpartmanager id="manager" runat="server">
<staticconnections>
<asp:webpartconnection id="conn1" providerid="p1" consumerid="c1">
<wp:rowtostringtransformer />
</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 id="p1" runat="server" />
<wp:stringconsumerwebpart id="c1" runat="server" />
</zonetemplate>
</asp:webpartzone>
</td>
<td>
<asp:connectionszone id="connectionszone1" runat="server" />
</td>
</tr>
</table>
</form>
</body>
</html>
웹 페이지에서 사용할 수 있도록 Web.config 파일의 섹션에서 사용자 지정된 변환기를 지정 <transformers> 해야 합니다. 코드 예제의 세 번째 섹션에서는 사용자 지정된 변환기를 Web.config 파일에 추가하는 방법을 보여줍니다.
<webParts enableExport="true">
<transformers>
<add name="RowToStringTransformer"
type="Samples.AspNet.VB.Controls.RowToStringTransformer" />
</transformers>
</webParts>
<webParts enableExport="true">
<transformers>
<add name="RowToStringTransformer"
type="Samples.AspNet.CS.Controls.RowToStringTransformer" />
</transformers>
</webParts>
코드 예제에는 웹 파트 페이지에서 표시 모드를 변경할 수 있는 사용자 컨트롤이 포함되어 있습니다. 사용자 컨트롤의 소스 코드는 다른 항목에서 제공됩니다. 연습 : 웹 파트 페이지의 표시 모드 변경에서 사용자 컨트롤에 대한 .ascx 파일을 가져올 수 있으며 .aspx 페이지와 동일한 폴더에 배치해야 합니다.
설명
변환기는 호환되지 않는 연결점을 사용하여 두 웹 파트 컨트롤 간에 데이터를 변환하는 데 사용됩니다. 연결점은 서로 다른 인터페이스를 통해 데이터를 제공하거나 사용할 때 호환되지 않습니다. 예를 들어 형식의 공급자 연결 지점을 구현하는 공급자가 형식 IWebPartRow 의 공급자 연결 지점을 IWebPartTable예상하는 소비자에 직접 연결할 수 없습니다. 대신 변환기를 사용하여 두 웹 파트 컨트롤을 연결해야 합니다.
변환기는 공급자 연결 지점에서 지원하는 형식의 데이터를 허용합니다. 해당 데이터를 소비자 연결 지점에서 지원하는 형식으로 변환하는 데 필요한 내부 처리를 수행합니다.
변환기는 사용자가 연결 모드에서 변환기를 구성할 수 있는 UI(사용자 인터페이스)를 제공할 수 있습니다. 구성 컨트롤은 메서드를 CreateConfigurationControl 통해 검색되고 웹 파트 연결 영역에 표시됩니다.
WebPartTransformer 는 추상 클래스이며 서로 다른 유형의 연결 지점 간에 사용자 지정된 번역을 제공하려면 확장해야 합니다.
구현자 참고
메서드를 재정의 Transform(Object) 해야 합니다.
생성자
| Name | Description |
|---|---|
| WebPartTransformer() |
WebPartTransformer 클래스의 새 인스턴스를 초기화합니다. |
메서드
| Name | Description |
|---|---|
| CreateConfigurationControl() |
ConnectionsZone 영역에서 변환기를 구성하는 ASP.NET 컨트롤을 표시합니다. |
| Equals(Object) |
지정된 개체가 현재 개체와 같은지 여부를 확인합니다. (다음에서 상속됨 Object) |
| GetHashCode() |
기본 해시 함수로 사용됩니다. (다음에서 상속됨 Object) |
| GetType() |
현재 인스턴스의 Type 가져옵니다. (다음에서 상속됨 Object) |
| LoadConfigurationState(Object) |
메서드와 함께 저장된 구성 상태를 로드합니다 SaveConfigurationState() . |
| MemberwiseClone() |
현재 Object단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
| SaveConfigurationState() |
사용자가 설정한 구성 상태를 ASP.NET 구성 컨트롤에 저장합니다. |
| ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
| Transform(Object) |
구현되는 경우 데이터를 변환하기 위한 개체를 제공합니다. |