ConsumerConnectionPoint Konstruktor
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.
- 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 abgeleitet werden, um einen benutzerdefinierten Anbieterverbindungspunkt zu erstellen.
Das Codebeispiel verfügt über drei Teile:
Eine Quelldatei, die ein Anbietersteuerelement WebPart , ein Verbrauchersteuerelement WebPart und ein benutzerdefiniertes ConsumerConnectionPoint Objekt enthält.
Eine Webseite, auf der die Steuerelemente in einer statischen Verbindung gehostet werden.
Eine Erläuterung zum Ausführen des Beispielcodes.
Der erste Teil des Codebeispiels ist die Quelle für die Anbieter- und Verbrauchersteuerelemente WebPart und eine benutzerdefinierte ConsumerConnectionPoint Klasse namens TableConsumerConnectionPoint. Beachten Sie, dass der Konstruktor der TableConsumerConnectionPoint Klasse den Basiskonstruktor aufruft, indem sie die erforderlichen Parameter übergeben, wie im Abschnitt "Parameter" angegeben. Beachten Sie auch, dass die SetConnectionInterface Methode in der TableConsumer Klasse als Rückrufmethode für Verbindungen angegeben wird, und das ConnectionConsumer Attribut deklariert den benutzerdefinierten TableConsumerConnectionPoint als Parameter. Dies veranschaulicht, wie Sie einen benutzerdefinierten Consumerverbindungspunkt erstellen und es dann einem Verbrauchersteuerelement zuordnen. In diesem Beispiel wird davon ausgegangen, dass der Quellcode dynamisch kompiliert wird, sodass Sie die Quellcodedatei in einem App_Code Unterordner Ihrer Webanwendung platzieren sollten.
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, auf der die benutzerdefinierten Steuerelemente in einer statischen Webpartverbindung gehostet werden. Am oberen Rand der Seite ist eine Register Richtlinie zum Deklarieren eines Präfixs und des Namespaces für die benutzerdefinierten Steuerelemente. Die Verbindung wird mithilfe eines Elements deklariert, und die Anbieter- und Verbrauchersteuerelemente werden innerhalb eines <asp:webpartconnection> <asp:webpartzone> Elements 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 einem Browser. Die Verbindung zwischen den Steuerelementen ist bereits vorhanden, und der Verbraucher zeigt die Daten des Anbieters an, da die Verbindung als statische Verbindung auf der Seite deklariert wurde.
Hinweise
Der ConsumerConnectionPoint Konstruktor für die ConsumerConnectionPoint Klasse ruft einfach den Basiskonstruktor auf, übergibt 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 möglicher 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 einfach eine Verbindung einrichten und die Klasse nicht erweitern, sollten Sie jedoch die GetConsumerConnectionPoints Methode aufrufen, um ein Verbindungspunktobjekt von einem Anbieter zurückzugeben.