Auf Englisch lesen

Freigeben über


RowToFieldTransformer Klasse

Definition

Transformiert in einer Webparts-Verbindung Daten von einem Anbieter, der die IWebPartRow-Schnittstelle implementiert, für einen Consumer, der Daten über die IWebPartField-Schnittstelle erwartet.

C#
[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
Vererbung
RowToFieldTransformer
Attribute
Implementiert

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie ein RowToFieldTransformer -Objekt verwendet wird, um einen Anbieter und Consumer mit inkompatiblen Verbindungspunkten zu verbinden. Der erste Abschnitt des Beispiels zeigt ein Webparts-Steuerelement, das als Anbieter fungiert. Die Anbieterklasse mit dem Namen RowProviderWebPartstellt Daten über die IWebPartRow -Schnittstelle bereit.

C#
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]);
        }          
    }
}

Der zweite Abschnitt des Beispiels enthält ein Webparts-Steuerelement, das ein Consumer einer Webparts-Verbindung ist. Die Consumerklasse mit dem Namen FieldConsumerWebParterwartet Daten von der IWebPartField Schnittstelle.

C#
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;
            }
        }
    }
}

Der dritte Abschnitt des Beispiels zeigt eine Seite, die die beiden Steuerelemente enthält und das RowToFieldTransformer -Objekt zum Verbinden der beiden Steuerelemente definiert.

ASP.NET (C#)
<%@ 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>

Das Codebeispiel enthält ein Benutzersteuerelement, mit dem Sie die Anzeigemodi auf einer Webparts-Seite ändern können. Der Quellcode für das Benutzersteuerelement stammt aus einem anderen Thema. Sie können die ASCX-Datei für das Benutzersteuerelement unter Exemplarische Vorgehensweise: Ändern der Anzeigemodi auf einer Webpartsseite abrufen. Sie muss sich im gleichen Ordner wie die ASPX-Seite befinden.

Hinweise

Transformatoren werden verwendet, um Daten zwischen zwei Webparts-Steuerelementen mit inkompatiblen Verbindungspunkten zu übersetzen. Ein RowToFieldTransformer -Objekt transformiert Daten von einem Anbieter, der die IWebPartRow Schnittstelle implementiert, zu einem Consumer, der Daten von der IWebPartField Schnittstelle benötigt. Die RowToFieldTransformer -Klasse ermöglicht das Verbinden von Steuerelementen mit diesen inkompatiblen Verbindungspunkten.

Konstruktoren

RowToFieldTransformer()

Initialisiert eine neue Instanz der RowToFieldTransformer-Klasse.

Eigenschaften

FieldName

Ruft den Namen des zu transformierenden Werts ab oder legt diesen fest.

Methoden

CreateConfigurationControl()

Zeigt ein ASP.NET-Steuerelement an, das in der RowToFieldTransformer-Zone einen ConnectionsZone-Transformator konfiguriert.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
LoadConfigurationState(Object)

Lädt den mit der SaveConfigurationState()-Methode gespeicherten Konfigurationszustand.

(Geerbt von WebPartTransformer)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
SaveConfigurationState()

Speichert den vom Benutzer festgelegten Konfigurationszustand im ASP.NET-Konfigurationssteuerelement.

(Geerbt von WebPartTransformer)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
Transform(Object)

Stellt ein Objekt für das Transformieren der Daten bereit.

Explizite Schnittstellenimplementierungen

IWebPartField.GetFieldValue(FieldCallback)

Gibt den Wert für das Feld zurück, das von der Schnittstelle als Basis einer Verbindung zwischen zwei Webparts-Steuerelementen verwendet wird.

IWebPartField.Schema

Ruft die Schemainformationen für ein Datenfeld ab, mit deren Hilfe von zwei Webparts-Steuerelementen Daten gemeinsam verwendet werden können.

Gilt für:

Produkt Versionen
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1