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 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 außerdem, 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. Dadurch wird 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 platzieren.
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. Oben auf der Seite befindet sich eine Register
Anweisung zum Deklarieren eines Präfixes und des Namespaces für die benutzerdefinierten Steuerelemente. Die Verbindung wird mithilfe eines <asp:webpartconnection>
-Elements deklariert, und die Anbieter- und Consumersteuerelemente werden innerhalb eines <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 einen Browser. Die Verbindung zwischen den Steuerelementen ist bereits vorhanden, und der Consumer zeigt die Daten des Anbieters 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 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.