IWebPartRow Schnittstelle

Definition

Definiert eine Anbieterschnittstelle für das Verbinden von zwei Serversteuerelementen mit einem einzelnen Datenfeld.Defines a provider interface for connecting two server controls using a single field of data.

public interface class IWebPartRow
public interface IWebPartRow
type IWebPartRow = interface
Public Interface IWebPartRow

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie mithilfe der IWebPartRow -Schnittstelle eine statische Verbindung zwischen zwei-Steuerelementen erstellt wird.The following code example demonstrates how to create a static connection between two controls using the IWebPartRow interface. Das Codebeispiel besteht aus drei Teilen:The code example has three parts:

  • Quellcode für zwei benutzerdefinierte WebPart Steuerelemente, die eine Verbindung mithilfe der IWebPartRow -Schnittstelle bilden können, wobei ein Steuerelement als Anbieter fungiert und das andere als Consumer fungiert.Source code for two custom WebPart controls that can form a connection using the IWebPartRow interface, with one control acting as the provider, and the other acting as the consumer.

  • Eine Webseite, die die Steuerelemente hostet und die statische Verbindung im Persistenzformat deklariert.A Web page that hosts the controls and declares the static connection in persistence format.

  • Eine Beschreibung, was geschieht, wenn der Beispielcode ausgeführt wird.A description of what happens when the example code runs.

Der erste Teil des Code Beispiels ist der Quellcode für die beiden benutzerdefinierten Steuerelemente.The first part of the code example is the source code for the two custom controls. Der erste ist der Code für den Anbieter, der die IWebPartRow -Schnittstelle implementiert.First is the code for the provider, which implements the IWebPartRow interface. Der Einfachheit halber erstellt der Anbieter eine Tabelle mit Daten, anstatt eine Verbindung mit einer Datenbank herzustellen.For simplicity in the example, the provider creates a table with some data rather than connecting to a database. Die GetConnectionInterface -Methode dient als Verbindungspunkt des Anbieters, der Rückruf Methode, die die-Schnittstellen Instanz an den Consumer zurückgibt.The GetConnectionInterface method serves as the provider's connection point, the callback method that returns the interface instance to the consumer. Für den Consumer wird die Schnittstellen Instanz aus dem Anbieter in der-Methode mit dem Namen SetConnectionInterfaceabgerufen, die mit einem ConnectionConsumer -Attribut gekennzeichnet ist.As for the consumer, it retrieves the interface instance from the provider in its method named SetConnectionInterface, which is marked with a ConnectionConsumer attribute. Nachdem die Instanz der Schnittstelle abgerufen wurde, ruft der Consumer in seiner OnPreRender -Methode die Implementierung GetRowData der-Methode im Anbieter auf, um die eigentlichen Daten abzurufen und auf die Seite zu schreiben.After retrieving the instance of the interface, the consumer, in its OnPreRender method, calls the implementation of the GetRowData method in the provider, to retrieve the actual data and write it to the page.

Damit das Codebeispiel ausgeführt werden kann, müssen Sie diesen Quellcode kompilieren.For the code example to run, you must compile this source code. Sie können Sie explizit kompilieren und die resultierende Assembly in den bin-Ordner der Website oder in den globalen Assemblycache einfügen.You can compile it explicitly and put the resulting assembly in your Web site's Bin folder or the global assembly cache. Alternativ dazu können Sie den Quellcode in den Ordner "App_Code" der Website einfügen, wo er zur Laufzeit dynamisch kompiliert wird.Alternatively, you can put the source code in your site's App_Code folder, where it will be dynamically compiled at run time. In diesem Codebeispiel wird die dynamische Kompilierung verwendet.This code example uses dynamic compilation. Eine exemplarische Vorgehensweise, die die Kompilierung veranschaulicht , finden Sie unter Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Webserver-Steuer Elements.For a walkthrough that demonstrates how to compile, see Walkthrough: Developing and Using a Custom Web Server Control.

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
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 provider 
  // of row data.
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  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.Rows);
        }

  } // RowProviderWebPart


  // This sample code creates a Web Parts control that acts as a consumer 
  // of row data.
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]  
  public sealed class RowConsumerWebPart : WebPart 
  {
    private IWebPartRow _provider;
        private ICollection _tableData;
    
        private void GetRowData(object rowData)
        {
            _tableData = (ICollection)rowData;
        }

        protected override void OnPreRender(EventArgs e)
        {
            if (_provider != null)
            {
                _provider.GetRowData(new RowCallback(GetRowData));
            }
        }


    protected override void RenderContents(HtmlTextWriter writer) 
    {
      if (_provider != null) 
      {
        PropertyDescriptorCollection props = _provider.Schema;
            int count = 0;
        if (props != null && props.Count > 0 && _tableData != null) 
        {
            foreach (PropertyDescriptor prop in props) 
                  {
                      foreach (DataRow o in _tableData)
                      {
                          writer.Write(prop.DisplayName + ": " + o[count]);
                          writer.WriteBreak();
                          writer.WriteLine();
                          count = count + 1;
                      }
            }
        }
        else 
        {
          writer.Write("No data");
        }
      }
      else 
      {
        writer.Write("Not connected");
      }
    }

    [ConnectionConsumer("Row")]
    public void SetConnectionInterface(IWebPartRow provider) 
        {
      _provider = provider;
    }

  } // RowConsumerWebPart
    
} // Samples.AspNet.CS.Controls 

Imports System.Collections
Imports System.ComponentModel
Imports System.Data
Imports System.Reflection
Imports System.Security.Permissions
Imports System.Web
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 provider 
  ' of row data.
  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  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 _
      ComponentModel.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.Rows)

    End Sub

  End Class


  ' This sample code creates a Web Parts control that acts as a consumer 
  ' of row data.
  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public NotInheritable Class RowConsumerWebPart
    Inherits WebPart
    Private _provider As IWebPartRow
    Private _tableData As ICollection


    Private Sub GetRowData(ByVal rowData As Object)
      _tableData = CType(rowData, ICollection)

    End Sub


    Protected Overrides Sub OnPreRender(ByVal e As EventArgs)

      If Not (_provider Is Nothing) Then
        _provider.GetRowData(New RowCallback(AddressOf GetRowData))
      End If

    End Sub

    Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter)

      If Not (_provider Is Nothing) Then
        Dim props As PropertyDescriptorCollection = _provider.Schema
        Dim count As Integer = 0
        If Not (props Is Nothing) AndAlso props.Count > 0 _
          AndAlso Not (_tableData Is Nothing) Then

          Dim prop As PropertyDescriptor
          For Each prop In props
            Dim o As DataRow
            For Each o In _tableData
              writer.Write(prop.DisplayName & ": " & o(count))
              writer.WriteBreak()
              writer.WriteLine()
              count = count + 1
            Next o
          Next prop
        Else
          writer.Write("No data")
        End If
      Else
        writer.Write("Not connected")
      End If

    End Sub


    <ConnectionConsumer("Row")> _
    Public Sub SetConnectionInterface(ByVal provider As IWebPartRow)
      _provider = provider

    End Sub

  End Class

End Namespace  ' Samples.AspNet.VB.Controls 

Der zweite Teil des Code Beispiels ist die Webseite, die die statische Verbindung deklariert und die Steuerelemente hostet.The second part of the code example is the Web page that declares the static connection and hosts the controls. Im oberen Bereich der Seite befindet sich eine Register -Direktive, die den Namespace des im Verzeichnis App_Code enthaltenen Quellcodes deklariert.Near the top of the page is a Register directive that declares the namespace of the source code contained in the App_Code directory. Die Verbindung wird mithilfe eines <asp:webpartconnection> -Elements deklariert.The connection is declared using an <asp:webpartconnection> element. Die benutzerdefinierten Consumer-und Anbieter Steuerelemente werden <zonetemplate> in einem- <asp:webpartzone> Element innerhalb eines-Elements deklariert. Dies ist erforderlich, damit Sie eine Verbindung herstellen können (Sie müssen sich in einer Zone WebPartZoneBase befinden, die von der-Klasse erbt).The custom consumer and provider controls are declared in a <zonetemplate> element within an <asp:webpartzone> element, which is required for them to be able to connect (they must reside within a zone that inherits from the WebPartZoneBase class).

<%@ page language="C#" %>
<%@ Register tagprefix="IRow" 
    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">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>IRow Test Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:webpartmanager ID="WebPartManager1" runat="server">
        <staticconnections>
          <asp:webpartconnection ID="wp1" ProviderID="provider1" 
            ConsumerID="consumer1">
          </asp:webpartconnection>
        </staticconnections>
      </asp:webpartmanager>
       
        <asp:webpartzone ID="WebPartZone1" runat="server">
          <ZoneTemplate>
            <irow:RowProviderWebPart ID="provider1" runat="server" 
              Title="Row Provider Control" />
            <irow:RowConsumerWebPart ID="consumer1" runat="server" 
              Title="Row Consumer Control" />
          </ZoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>
<%@ page language="VB" %>
<%@ Register tagprefix="IRow" 
    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">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>IRow Test Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:webpartmanager ID="WebPartManager1" runat="server">
        <staticconnections>
          <asp:webpartconnection ID="wp1" ProviderID="provider1" 
            ConsumerID="consumer1">
          </asp:webpartconnection>
        </staticconnections>
      </asp:webpartmanager>
       
        <asp:webpartzone ID="WebPartZone1" runat="server">
          <ZoneTemplate>
            <irow:RowProviderWebPart ID="provider1" runat="server" 
              Title="Row Provider Control" />
            <irow:RowConsumerWebPart ID="consumer1" runat="server" 
              Title="Row Consumer Control" />
          </ZoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>

Lädt die Seite in einem Browser.Load the page in a browser. Das Consumer-Steuerelement zeigt die Daten an, die aus der angegebenen Zeile bereitgestellt werden, die der Anbieter IWebPartRow über eine Instanz der Schnittstelle verfügbar macht.The consumer control displays the data provided from the specified row, which the provider makes available through an instance of the IWebPartRow interface.

Hinweise

Diese Schnittstelle ist für die Verwendung mit Webparts Verbindungen konzipiert.This interface is designed to be used with Web Parts connections. In einer Webparts Verbindung stellen zwei Server Steuerelemente, die sich WebPartZoneBase in einer Zone befinden, eine Verbindung her und teilen Daten mit einem Steuerelement, das als Consumer fungiert, und dem anderen Steuerelement, das als Anbieter fungiert.In a Web Parts connection, two server controls that reside in a WebPartZoneBase zone establish a connection and share data, with one control acting as the consumer and the other control acting as a provider. Der Mechanismus für die Freigabe von Daten in einer Webparts Verbindung ist eine Schnittstellen Instanz, die der Anbieter mithilfe einer Rückruf Methode für den Consumer bedient.The mechanism for sharing data in a Web Parts connection is an interface instance, which the provider serves to the consumer by means of a callback method. Zum Herstellen einer Verbindung müssen der Consumer und der Anbieter beide mit dem gleichen Schnittstellentyp für die Datenfreigabe arbeiten.To establish a connection, the consumer and provider must both work with the same interface type for sharing data. Wenn der Consumer den vom Anbieter gesendeten Schnittstellentyp nicht erkennt, ist es weiterhin möglich, die Steuerelemente mithilfe eines Transformators (ein WebPartTransformer -Objekt) zu verbinden, der die vom Anbieter gesendete Schnittstellen Instanz in einen Typ übersetzt, den der Consumer räumt.If the consumer does not recognize the interface type sent by the provider, it is still possible to connect the controls by means of a transformer (a WebPartTransformer object) that translates the interface instance sent by the provider into a type that the consumer recognizes. Weitere Informationen zu Verbindungen finden WebPartConnection Sie unter und Webparts Verbindungen (Übersicht).For details on connections, see WebPartConnection and Web Parts Connections Overview.

Bei IWebPartRow der-Schnittstelle handelt es sich um eine Anbieter Schnittstelle, die im Webparts-Steuerelement als Standardschnittstelle zum Erstellen von Verbindungen basierend auf einer Daten Zeile enthalten ist.The IWebPartRow interface is a provider interface included with the Web Parts control set as a standard interface for creating connections based on a data row. Sie können auch benutzerdefinierte Schnittstellen erstellen, die mit Webparts-Verbindungen verwendet werden können. in vielen datengesteuerten Webanwendungen ist es jedoch hilfreich, Verbindungen basierend auf einem gemeinsamen Feld ( IWebPartField Weitere Informationen finden Sie unter der-Schnittstelle) IWebPartTable und der-Tabelle zu erstellen (Ausführliche Informationen finden Sie im Interface) oder Zeile aus der Datenquelle.You can also create custom interfaces to use with Web Parts connections, but in many data-driven Web applications, it is useful to create connections based on a common field (for details, see the IWebPartField interface), table (for details, see the IWebPartTable interface), or row from the data source. Bei einer typischen Verbindung würde ein WebPart Steuerelement, das als Anbieter fungiert, IWebPartRow die-Schnittstelle implementieren und den Consumern eine Instanz der-Schnittstelle in einer speziellen Rückruf Methode bereitstellen.In a typical connection, a WebPart control acting as a provider would implement the IWebPartRow interface and provide an instance of the interface to consumers in a special callback method. Beispielsweise kann der Anbieter eine IWebPartRow Schnittstelle für eine Zeile implementieren, die einem Benutzer in der Benutzer Informations Tabelle entspricht.For example, the provider might implement an IWebPartRow interface for a row that corresponds to a user in your user information table. Ein WebPart anderes Steuerelement, das als Consumer fungiert, würde eine spezielle Methode zum Empfangen der Schnittstellen Instanz definieren und dann die Benutzerdaten extrahieren, verwenden, um zusätzliche Informationen zu den Konten dieses Benutzers zu suchen und alle Informationen anzuzeigen, die im Zusammenhang mit dieser Benutzer auf der Seite.Another WebPart control acting as a consumer would define a special method to receive the interface instance, and could then extract the user data, use it to look up additional information about that user's accounts, and display all the information related to that user on the page.

Die IWebPartRow Schnittstelle verfügt über zwei verfügbar gemachte Member.The IWebPartRow interface has two exposed members. Die Schema -Eigenschaft gibt Schema Informationen über die in einem PropertyDescriptorCollection -Objekt gekapselte Daten Zeile zurück.The Schema property returns schema information about the data row encapsulated in a PropertyDescriptorCollection object. Die GetRowData -Methode deklariert eine Methode, die von einem Implementierer (z. b. einem Anbieter Steuerelement) verwendet wird, um die Zeilendaten der Schnittstellen Instanz abzurufen, wenn die Rückruf Methode aufgerufen wird.The GetRowData method declares a method that an implementer (such as a provider control) uses to retrieve the interface instance's row data when the callback method is invoked.

Eigenschaften

Schema

Ruft die Schemainformationen für eine Datenzeile ab, mit deren Hilfe von zwei WebPart-Steuerelementen Daten gemeinsam verwendet werden können.Gets the schema information for a data row that is used to share data between two WebPart controls.

Methoden

GetRowData(RowCallback)

Gibt die Daten für die Zeile zurück, die von der Schnittstelle als Basis einer Verbindung zwischen zwei WebPart-Steuerelementen verwendet wird.Returns the data for the row that is being used by the interface as the basis of a connection between two WebPart controls.

Gilt für:

Siehe auch