RowToFieldTransformer Class
Assembly: System.Web (in system.web.dll)
'Declaration Public NotInheritable Class RowToFieldTransformer Inherits WebPartTransformer Implements IWebPartField 'Usage Dim instance As RowToFieldTransformer
public final class RowToFieldTransformer extends WebPartTransformer implements IWebPartField
public final class RowToFieldTransformer extends WebPartTransformer implements IWebPartField
Transformers are used to translate data between two Web Parts controls with incompatible connection points. A RowToFieldTransformer object transforms data from a provider implementing the IWebPartRow interface to a consumer requiring data from the IWebPartField interface. The RowToFieldTransformer class allows controls with these incompatible connection points to be connected.
The following code example demonstrates how to use a RowToFieldTransformer object to connect a provider and consumer with incompatible connection points. The first section of the example shows a Web Parts control that serves as a provider. The provider class, named RowProviderWebPart, provides data through the IWebPartRow interface.
Imports System 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 'New <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 'GetRowData End Class 'RowProviderWebPart End Namespace
The second section of the example contains a Web Parts control that is a consumer of a Web Parts connection. The consumer class, named FieldConsumerWebPart, expects data from the IWebPartField interface.
Imports System 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 'GetFieldValue 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 'OnPreRender 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 'RenderContents <ConnectionConsumer("Field")> _ Public Sub SetConnectionInterface(ByVal provider As IWebPartField) _provider = provider End Sub 'SetConnectionInterface 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 'New End Class 'FieldConsumerConnectionPoint End Class 'FieldConsumerWebPart
The third section of the example shows a page that contains the two controls and defines the RowToFieldTransformer object for connecting the two controls.
<%@ 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 /> </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>
The code example includes a user control that enables you to change display modes on a Web Parts page. The source code for the user control comes from another topic. You can obtain the .ascx file for the user control from Walkthrough: Changing Display Modes on a Web Parts Page, and it must be placed in the same folder as the .aspx page.
- AspNetHostingPermission for operating in a hosted environment. Demand value: LinkDemand; Permission value: Minimal.
System.Web.UI.WebControls.WebParts.WebPartTransformer
System.Web.UI.WebControls.WebParts.RowToFieldTransformer
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.