ProviderConnectionPoint 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 ProviderConnectionPoint-Klasse.
public:
ProviderConnectionPoint(System::Reflection::MethodInfo ^ callbackMethod, Type ^ interfaceType, Type ^ controlType, System::String ^ displayName, System::String ^ id, bool allowsMultipleConnections);
public ProviderConnectionPoint(System.Reflection.MethodInfo callbackMethod, Type interfaceType, Type controlType, string displayName, string id, bool allowsMultipleConnections);
new System.Web.UI.WebControls.WebParts.ProviderConnectionPoint : System.Reflection.MethodInfo * Type * Type * string * string * bool -> System.Web.UI.WebControls.WebParts.ProviderConnectionPoint
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 Anbietersteuerelement, die eine Schnittstelleninstanz an Consumer zurückgibt, um eine Verbindung herzustellen.
- displayName
- String
Ein Anzeigename für den Anbieterverbindungspunkt, der Benutzern in der Verbindungs-Benutzeroberfläche (UI) angezeigt wird.
- id
- String
Ein eindeutiger Bezeichner für den Anbieterverbindungspunkt.
- allowsMultipleConnections
- Boolean
Ein boolescher Wert, der angibt, ob der Anbieterverbindungspunkt mehrere gleichzeitige Verbindungen mit Consumern 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 derselbe Typ wie das Anbietersteuerelement (oder eine gültige Von ihr abgeleitete Klasse).
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie sie von der ProviderConnectionPoint Klasse abgeleitet werden, um einen benutzerdefinierten Anbieterverbindungspunkt zu erstellen.
Das Codebeispiel enthält drei Teile:
Eine Quelldatei, die ein Anbietersteuerelement WebPart , ein Verbrauchersteuerelement WebPart und ein benutzerdefiniertes ProviderConnectionPoint 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 Consumersteuerelemente WebPart und eine benutzerdefinierte ProviderConnectionPoint Klasse mit dem Namen TableProviderConnectionPoint. Beachten Sie, dass der Konstruktor der TableProviderConnectionPoint Klasse den Basiskonstruktor aufruft und die erforderlichen Parameter übergibt, wie im Abschnitt "Parameter" angegeben. Beachten Sie außerdem, dass die TableProviderWebPart Methode in der GetConnectionInterface Klasse als Rückrufmethode für Verbindungen angegeben wird, und das ConnectionProvider Attribut deklariert den Benutzerdefinierten TableProviderConnectionPoint als Parameter. Dies veranschaulicht, wie Sie einen benutzerdefinierten Anbieterverbindungspunkt erstellen und es dann einem Anbietersteuerelement 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 ist eine Register Direktive 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 einem Browser. Die Verbindung zwischen den Steuerelementen ist bereits vorhanden, und der Consumer zeigt die Daten des Anbieters an, da die Verbindung als statische Verbindung auf der Seite deklariert wurde.
Hinweise
Der ProviderConnectionPoint Konstruktor für die ProviderConnectionPoint 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 ProviderConnectionPoint Konstruktor aufrufen, um eine eigene Instanz der ProviderConnectionPoint Klasse zu erstellen. In Fällen, in denen Sie einfach eine Verbindung herstellen und die Klasse nicht erweitern, sollten Sie die GetProviderConnectionPoints Methode aufrufen, um ein vorhandenes Verbindungspunktobjekt von einem Anbieter zurückzugeben.