Share via


ConsumerConnectionPoint Konstruktor

Definition

Initialisiert eine neue Instanz der ConsumerConnectionPoint-Klasse.

public:
 ConsumerConnectionPoint(System::Reflection::MethodInfo ^ callbackMethod, Type ^ interfaceType, Type ^ controlType, System::String ^ displayName, System::String ^ id, bool allowsMultipleConnections);
public ConsumerConnectionPoint (System.Reflection.MethodInfo callbackMethod, Type interfaceType, Type controlType, string displayName, string id, bool allowsMultipleConnections);
new System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint : System.Reflection.MethodInfo * Type * Type * string * string * bool -> System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint
Public Sub New (callbackMethod As MethodInfo, interfaceType As Type, controlType As Type, displayName As String, id As String, allowsMultipleConnections As Boolean)

Parameter

callbackMethod
MethodInfo

Die Methode im Consumersteuerelement, die zum Erstellen einer Verbindung eine Schnittstelleninstanz an die Consumer zurückgibt.

interfaceType
Type

Der Type der Schnittstelle, die der Consumer von einem Anbieter empfängt.

controlType
Type

Der Type des Consumersteuerelements, dem der Consumerverbindungspunkt zugeordnet wird.

displayName
String

Ein Anzeigename für den Consumerverbindungspunkt, der Benutzern in der Verbindungs-Benutzeroberfläche angezeigt wird.

id
String

Ein eindeutiger Bezeichner für den Consumerverbindungspunkt.

allowsMultipleConnections
Boolean

Ein boolescher Wert, der angibt, ob der Consumerverbindungspunkt mehrere gleichzeitige Verbindungen mit Anbietern haben kann.

Ausnahmen

callbackMethod ist null.

- oder -

interfaceType ist null.

- oder -

controlType ist null.

- oder -

displayName ist null oder eine leere Zeichenfolge ("").

controlType ist nicht der gleiche Typ wie das Consumersteuerelement (oder eine davon abgeleitete gültige Klasse).

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Sie von der ConsumerConnectionPoint -Klasse ableiten, um einen benutzerdefinierten Anbieterverbindungspunkt zu erstellen.

Das Codebeispiel umfasst drei Teile:

  • Eine Quelldatei, die ein Anbietersteuerelement WebPart , ein Consumersteuerelement WebPart und ein benutzerdefiniertes ConsumerConnectionPoint Objekt enthält.

  • Eine Webseite, die die Steuerelemente in einer statischen Verbindung hostet.

  • Eine Erklärung zum Ausführen des Beispielcodes.

Der erste Teil des Codebeispiels ist die Quelle für die Anbieter- und Consumersteuerelemente WebPart sowie eine benutzerdefinierte ConsumerConnectionPoint Klasse mit dem Namen TableConsumerConnectionPoint. Beachten Sie, dass der Konstruktor der TableConsumerConnectionPoint -Klasse den Basiskonstruktor aufruft und ihn die erforderlichen Parameter übergibt, wie im Abschnitt Parameter angegeben. Beachten Sie auch, dass in der TableConsumer -Klasse die SetConnectionInterface -Methode als Rückrufmethode für Verbindungen angegeben wird und das ConnectionConsumer -Attribut den benutzerdefinierten TableConsumerConnectionPoint als Parameter deklariert. Dies veranschaulicht, wie sie einen benutzerdefinierten Consumerverbindungspunkt erstellen und ihn dann einem Consumersteuerelement zuordnen. In diesem Beispiel wird davon ausgegangen, dass der Quellcode dynamisch kompiliert wird. Daher sollten Sie die Quellcodedatei in einem App_Code Unterordner Ihrer Webanwendung ablegen.

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;

//This sample code creates a Web Parts control that acts as a provider of table data.
namespace Samples.AspNet.CS.Controls
{
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
    public sealed class TableProviderWebPart : WebPart, IWebPartTable
    {
        DataTable _table;

        public TableProviderWebPart()
        {
            _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);
        }

        public PropertyDescriptorCollection Schema
        {
            get
            {
                return TypeDescriptor.GetProperties(_table.DefaultView[0]);
            }
        }
        public void GetTableData(TableCallback callback)
        {
                callback(_table.Rows);
        }

        public bool ConnectionPointEnabled
        {
            get
            {
                object o = ViewState["ConnectionPointEnabled"];
                return (o != null) ? (bool)o : true;
            }
            set
            {
                ViewState["ConnectionPointEnabled"] = value;
            }
        }

        [ConnectionProvider("Table", typeof(TableProviderConnectionPoint), AllowsMultipleConnections = true)]
        public IWebPartTable GetConnectionInterface()
        {
            return new TableProviderWebPart();
        }

        public class TableProviderConnectionPoint : ProviderConnectionPoint
        {
            public TableProviderConnectionPoint(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 ((TableProviderWebPart)control).ConnectionPointEnabled;
            }
        }
    }
    
    // This code sample demonstrates a custom WebPart controls that acts as 
    // a consumer in a Web Parts connection.
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class TableConsumer : WebPart
  {
    private IWebPartTable _provider;
    private ICollection _tableData;

    private void GetTableData(object tableData)
    {
      _tableData = (ICollection)tableData;
    }

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

    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("Table")]
    public void SetConnectionInterface(IWebPartTable provider)
    {
      _provider = provider;
    }

    public class TableConsumerConnectionPoint : ConsumerConnectionPoint
    {
      public TableConsumerConnectionPoint(MethodInfo callbackMethod, Type interfaceType, Type controlType,
      string name, string id, bool allowsMultipleConnections)
        : base(
        callbackMethod, interfaceType, controlType,
        name, id, allowsMultipleConnections)
      {
      }
    }
  }
}

Der zweite Teil des Codebeispiels ist die Webseite, die die benutzerdefinierten Steuerelemente in einer statischen Webpart-Verbindung hostet. Oben auf der Seite befindet sich eine Register -Anweisung zum Deklarieren eines Präfixes und des Namespace für die benutzerdefinierten Steuerelemente. Die Verbindung wird mithilfe eines <asp:webpartconnection> -Elements deklariert, und die Anbieter- und Consumersteuerelemente werden in einem <asp:webpartzone> -Element deklariert.

<%@ page language="C#" %>
<%@ register tagprefix="aspSample" 
    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>IField 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>
            <aspSample:TableProviderWebPart ID="provider1" runat="server" 
              ToolTip="Web Parts Table Provider Control" />
            <aspSample:TableConsumer ID="consumer1" runat="server" 
              ToolTip="Web Parts Table Consumer Control"/>
          </zoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>

Laden Sie die Seite in einen Browser. Die Verbindung zwischen den Steuerelementen ist bereits vorhanden, und der Consumer zeigt die Daten vom Anbieter an, da die Verbindung auf der Seite als statische Verbindung deklariert wurde.

Hinweise

Der ConsumerConnectionPoint Konstruktor für die ConsumerConnectionPoint -Klasse ruft einfach den Basiskonstruktor auf, übergibt an ihn die verschiedenen Parameter und initialisiert die Basisklasse.

Der Basisklassenkonstruktor überprüft eine Reihe der Parameter für einen Verbindungspunkt und kann mehrere Ausnahmen auslösen. Eine Liste der möglichen Ausnahmen finden Sie im Abschnitt Ausnahmen.

Sie können den ConsumerConnectionPoint Konstruktor aufrufen, um Eine eigene Instanz der ConsumerConnectionPoint -Klasse zu erstellen. In Fällen, in denen Sie jedoch einfach eine Verbindung herstellen und die -Klasse nicht erweitern, sollten Sie die GetConsumerConnectionPoints -Methode aufrufen, um ein Verbindungspunktobjekt von einem Anbieter zurückzugeben.

Gilt für:

Weitere Informationen