WebPartTransformer 클래스

정의

호환되지 않는 두 개의 연결 지점 간에 데이터를 변환하기 위한 변환기 클래스의 기본 구현을 제공합니다.

public ref class WebPartTransformer abstract
public abstract class WebPartTransformer
type WebPartTransformer = class
Public MustInherit Class WebPartTransformer
상속
WebPartTransformer
파생

예제

다음 코드 예제에는에서 파생 되는 사용자 지정된 변환기를 만드는 방법을 보여 줍니다는 WebPartTransformer 클래스입니다. 라는 변환기는 RowToStringTransformer를 연결 하는 웹 파트 공급자와 호환 되지 않는 연결점을 사용 하 여 웹 파트 소비자에 대 한 허용 합니다. 형식의 데이터를 표시 하는 공급자 IWebPartRow에 있지만 형식의 데이터만 사용할 수 있는 소비자 String합니다. 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>

사용자 지정된 변환기를 지정 해야 합니다 <transformers> 웹 페이지에 사용할 수 있으려면 Web.config 파일의 섹션입니다. 코드 예제에서는 세 번째 섹션에는 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합니다. 대신 두 웹 파트 컨트롤을 연결 하는 변환기를 사용 합니다.

Transformer는 공급자 연결 지점에서 지 원하는 형식의 데이터를 허용 합니다. 해당 데이터 소비자 연결 지점에서 지 원하는 형식으로 변환 하는 데 필요한 내부 처리를 수행 합니다.

변환기를 사용 하면 연결 모드에 있는 경우 변환기를 구성 하는 사용자 인터페이스 (UI)를 제공할 수 있습니다. 구성 컨트롤을 통해 검색 되는 CreateConfigurationControl 메서드 웹 파트 연결 영역에 표시 됩니다.

WebPartTransformer 추상 클래스 이며 다양 한 유형의 연결 지점 간의 사용자 지정된 변환을 제공 하도록 확장할 수 있어야 합니다.

구현자 참고

재정의 해야 합니다 Transform(Object) 메서드.

생성자

WebPartTransformer()

WebPartTransformer 클래스의 새 인스턴스를 초기화합니다.

메서드

CreateConfigurationControl()

변환기를 구성하는 ASP.NET 컨트롤을 ConnectionsZone 영역에 표시합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

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

기본 해시 함수로 작동합니다.

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

현재 인스턴스의 Type을 가져옵니다.

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

SaveConfigurationState() 메서드를 사용하여 저장된 구성 상태를 로드합니다.

MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

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

ASP.NET 구성 컨트롤에서 사용자가 설정한 구성 상태를 저장합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

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

구현될 경우 이 메서드는 데이터를 변환하기 위한 개체를 제공합니다.

적용 대상