WebPartManager.CanConnectWebParts Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Controleert de WebPart besturingselementen die deelnemen aan een verbinding om te bepalen of ze verbinding kunnen maken.
Overloads
| Name | Description |
|---|---|
| CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) |
Controleert de WebPart besturingselementen die deelnemen aan een verbinding om te bepalen of ze kunnen worden verbonden, wanneer de besturingselementen van de consument en provider compatibele interfaces hebben en een WebPartTransformer object niet nodig is. |
| CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) |
Controleert de WebPart besturingselementen die deelnemen aan een verbinding om te bepalen of ze kunnen worden verbonden en gebruikt een WebPartTransformer object om de verbinding tussen een incompatibele consument en provider te maken. |
Opmerkingen
De CanConnectWebParts methode wordt gebruikt om te bepalen of twee WebPart besturingselementen kunnen worden verbonden. De methode wordt doorgaans gebruikt als voorwaardelijke controle voordat de ConnectWebParts methode wordt aangeroepen.
De CanConnectWebParts methode controleert een aantal criteria waaraan moet worden voldaan voordat twee besturingselementen een verbinding kunnen vormen. De volgende lijst bevat een overzicht van de primaire criteria voor het maken van een verbinding. Als aan al deze criteria (plus enkele aanvullende interne voorwaarden) wordt voldaan, retourneert truede methode, wat betekent dat de besturingselementen kunnen worden verbonden:
De provider- en consumentenbesturingselementen kunnen niet zijn
nullen moeten worden opgenomen in de verzameling besturingselementen waarnaar wordt verwezen door de WebParts eigenschap.De provider en consument kunnen niet hetzelfde besturingselement zijn. Met andere woorden, een WebPart besturingselement kan geen verbinding maken met zichzelf.
De ConnectionPoint objecten (verbindingspunten) voor zowel de provider als de consument kunnen niet zijn
null.De provider en consument kunnen niet worden gesloten (de eigenschap van IsClosed het besturingselement kan niet zijn
true).De ControlType eigenschap van het besturingselement verbindingspunt moet overeenkomen met het type besturingselement van zowel de consument als de provider.
De verbindingspunten moeten beide zijn ingeschakeld (hun GetEnabled methoden moeten beide retourneren
true).Elk verbindingspunt mag niet meer verbindingen vormen dan wat is opgegeven in een eigen AllowsMultipleConnections eigenschap.
Als een WebPartTransformer object (transformator) is vereist om incompatibele besturingselementen te verbinden, kan het niet.
nullAls de besturingselementen echter al compatibel zijn, moet de transformator zijnnull.De transformator (indien gebruikt) moet in de AvailableTransformers verzameling worden verwezen.
De transformator (indien gebruikt) moet interfaces hebben die compatibel zijn met de provider en de consument, zodat deze gegevens tussen de twee besturingselementen kan transformeren. De secundaire interfaces van de consument en provider moeten ook compatibel zijn.
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint)
Controleert de WebPart besturingselementen die deelnemen aan een verbinding om te bepalen of ze kunnen worden verbonden, wanneer de besturingselementen van de consument en provider compatibele interfaces hebben en een WebPartTransformer object niet nodig is.
public:
bool CanConnectWebParts(System::Web::UI::WebControls::WebParts::WebPart ^ provider, System::Web::UI::WebControls::WebParts::ProviderConnectionPoint ^ providerConnectionPoint, System::Web::UI::WebControls::WebParts::WebPart ^ consumer, System::Web::UI::WebControls::WebParts::ConsumerConnectionPoint ^ consumerConnectionPoint);
public bool CanConnectWebParts(System.Web.UI.WebControls.WebParts.WebPart provider, System.Web.UI.WebControls.WebParts.ProviderConnectionPoint providerConnectionPoint, System.Web.UI.WebControls.WebParts.WebPart consumer, System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint consumerConnectionPoint);
member this.CanConnectWebParts : System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ProviderConnectionPoint * System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint -> bool
Public Function CanConnectWebParts (provider As WebPart, providerConnectionPoint As ProviderConnectionPoint, consumer As WebPart, consumerConnectionPoint As ConsumerConnectionPoint) As Boolean
Parameters
- provider
- WebPart
Het besturingselement dat gegevens consumer levert wanneer de besturingselementen zijn verbonden.
- providerConnectionPoint
- ProviderConnectionPoint
Een ConnectionPoint die het mogelijk maakt provider om deel te nemen aan een verbinding.
- consumer
- WebPart
Het besturingselement dat gegevens ontvangt van provider wanneer de besturingselementen zijn verbonden.
- consumerConnectionPoint
- ConsumerConnectionPoint
Een ConnectionPoint die fungeert als een callback-methode, zodat deze consumer kan deelnemen aan een verbinding.
Retouren
Een Booleaanse waarde die aangeeft of provider en consumer kan worden verbonden.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u deze methode gebruikt.
Het codevoorbeeld heeft vier delen:
Een gebruikersbeheer waarmee u weergavemodi op een pagina met webonderdelen kunt wijzigen.
Een webpagina met twee aangepaste WebPart besturingselementen die kunnen worden verbonden, een
<asp:webpartmanager>element en een aantal code voor het afhandelen van gebeurtenissen waarmee een verbinding wordt gemaakt met behulp van de CanConnectWebParts methode.Een broncodebestand met twee aangepaste WebPart besturingselementen en een aangepaste interface.
Een uitleg van hoe het voorbeeld werkt in een browser.
Het eerste deel van het codevoorbeeld is het gebruikersbeheer voor het wijzigen van weergavemodi. U kunt de broncode voor het gebruikersbeheer verkrijgen in de sectie Voorbeeld van het WebPartManager klassenoverzicht. Zie Walkthrough: Weergavemodi wijzigen op een pagina met webonderdelen voor meer informatie over weergavemodi en hoe het gebruikersbeheer werkt.
De declaratieve markering voor de webpagina bevat Register instructies voor zowel het gebruikersbesturingselement als de aangepaste besturingselementen. Er is een <asp:webpartmanager> element, een <asp:webpartzone> element dat de aangepaste besturingselementen en een <asp:connectionszone> element bevat. U ziet dat in de Page_Load methode de code controleert of de verbinding kan worden gemaakt en, als dat het geval is, een provider, een consument en hun respectieve verbindingspunten definieert en vervolgens een nieuwe verbinding toevoegt aan de set statische verbindingen waarnaar wordt verwezen door de StaticConnections eigenschap.
<%@ Page Language="C#" %>
<%@ register TagPrefix="uc1"
TagName="DisplayModeMenuCS"
Src="DisplayModeMenuCS.ascx" %>
<%@ register tagprefix="aspSample"
Namespace="Samples.AspNet.CS.Controls"
Assembly="ConnectionSampleCS"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
// Define provider, consumer, and connection points.
WebPart provider = mgr.WebParts["zip1"];
ProviderConnectionPoint provConnPoint =
mgr.GetProviderConnectionPoints(provider)["ZipCodeProvider"];
WebPart consumer = mgr.WebParts["weather1"];
ConsumerConnectionPoint consConnPoint =
mgr.GetConsumerConnectionPoints(consumer)["ZipCodeConsumer"];
// Check whether the connection already exists.
if (mgr.CanConnectWebParts(provider, provConnPoint,
consumer, consConnPoint))
{
// Create a new static connection.
WebPartConnection conn = new WebPartConnection();
conn.ID = "staticConn1";
conn.ConsumerID = "weather1";
conn.ConsumerConnectionPointID = "ZipCodeConsumer";
conn.ProviderID = "zip1";
conn.ProviderConnectionPointID = "ZipCodeProvider";
mgr.StaticConnections.Add(conn);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<!-- Reference the WebPartManager control. -->
<asp:WebPartManager ID="mgr" runat="server" />
<div>
<uc1:DisplayModeMenuCS ID="displaymode1"
runat="server" />
<!-- Reference consumer and provider controls
in a zone. -->
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:ZipCodeWebPart ID="zip1"
runat="server"
Title="Zip Code Control"/>
<aspSample:WeatherWebPart ID="weather1"
runat="server"
Title="Weather Control" />
</ZoneTemplate>
</asp:WebPartZone>
<hr />
<!-- Add a ConnectionsZone so users can connect
controls. -->
<asp:ConnectionsZone ID="ConnectionsZone1"
runat="server" />
</div>
</form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ register TagPrefix="uc1"
TagName="DisplayModeMenuVB"
Src="DisplayModeMenuVB.ascx" %>
<%@ register tagprefix="aspSample"
Namespace="Samples.AspNet.VB.Controls"
Assembly="ConnectionSampleVB"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs)
' Define provider, consumer, and connection points.
Dim provider As WebPart = mgr.WebParts("zip1")
Dim provConnPoint As ProviderConnectionPoint = _
mgr.GetProviderConnectionPoints(provider)("ZipCodeProvider")
Dim consumer As WebPart = mgr.WebParts("weather1")
Dim consConnPoint As ConsumerConnectionPoint = _
mgr.GetConsumerConnectionPoints(consumer)("ZipCodeConsumer")
' Check whether the connection already exists.
If mgr.CanConnectWebParts(provider, provConnPoint, _
consumer, consConnPoint) Then
' Create a new static connection.
Dim conn As New WebPartConnection()
conn.ID = "staticConn1"
conn.ConsumerID = "weather1"
conn.ConsumerConnectionPointID = "ZipCodeConsumer"
conn.ProviderID = "zip1"
conn.ProviderConnectionPointID = "ZipCodeProvider"
mgr.StaticConnections.Add(conn)
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<!-- Reference the WebPartManager control. -->
<asp:WebPartManager ID="mgr" runat="server" />
<div>
<uc1:DisplayModeMenuVB ID="displaymode1"
runat="server" />
<!-- Reference consumer and provider controls
in a zone. -->
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:ZipCodeWebPart ID="zip1"
runat="server"
Title="Zip Code Control"/>
<aspSample:WeatherWebPart ID="weather1"
runat="server"
Title="Weather Control" />
</ZoneTemplate>
</asp:WebPartZone>
<hr />
<!-- Add a ConnectionsZone so users can connect
controls. -->
<asp:ConnectionsZone ID="ConnectionsZone1"
runat="server" />
</div>
</form>
</body>
</html>
Het derde deel van het voorbeeld is de broncode voor de besturingselementen. Het bevat een interface en twee aangepaste WebPart besturingselementen, één die fungeert als provider en de andere als consument. Omdat ze compatibele verbindingspunten hebben (beide de interface herkennen IZipCode ), is er geen transformator nodig om de verbinding te maken. Als u het codevoorbeeld wilt uitvoeren, moet u deze broncode compileren. U kunt deze expliciet compileren en de resulterende assembly in de map Bin van uw website of de globale assemblycache plaatsen. U kunt de broncode ook in de map App_Code van uw site plaatsen, waar deze dynamisch wordt gecompileerd tijdens runtime. Zie Walkthrough: Een aangepast webserverbeheer ontwikkelen en gebruiken voor een overzicht van hoe u compileert.
namespace Samples.AspNet.CS.Controls
{
using System;
using System.Web;
using System.Web.Security;
using System.Security.Permissions;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public interface IZipCode
{
string ZipCode { get; set;}
}
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class ZipCodeWebPart : WebPart, IZipCode
{
string zipCodeText = String.Empty;
TextBox input;
Button send;
public ZipCodeWebPart()
{
}
// Make the implemented property personalizable to save
// the Zip Code between browser sessions.
[Personalizable()]
public virtual string ZipCode
{
get { return zipCodeText; }
set { zipCodeText = value; }
}
// This is the callback method that returns the provider.
[ConnectionProvider("Zip Code", "ZipCodeProvider")]
public IZipCode ProvideIZipCode()
{
return this;
}
protected override void CreateChildControls()
{
Controls.Clear();
input = new TextBox();
this.Controls.Add(input);
send = new Button();
send.Text = "Enter 5-digit Zip Code";
send.Click += new EventHandler(this.submit_Click);
this.Controls.Add(send);
}
private void submit_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(input.Text))
{
zipCodeText = Page.Server.HtmlEncode(input.Text);
input.Text = String.Empty;
}
}
}
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class WeatherWebPart : WebPart
{
private IZipCode _provider;
string _zipSearch;
Label DisplayContent;
// This method is identified by the ConnectionConsumer
// attribute, and is the mechanism for connecting with
// the provider.
[ConnectionConsumer("Zip Code", "ZipCodeConsumer")]
public void GetIZipCode(IZipCode Provider)
{
_provider = Provider;
}
protected override void OnPreRender(EventArgs e)
{
EnsureChildControls();
if (this._provider != null)
{
_zipSearch = _provider.ZipCode.Trim();
DisplayContent.Text = "My Zip Code is: " + _zipSearch;
}
}
protected override void CreateChildControls()
{
Controls.Clear();
DisplayContent = new Label();
this.Controls.Add(DisplayContent);
}
}
}
Imports System.Web
Imports System.Web.Security
Imports System.Security.Permissions
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Namespace Samples.AspNet.VB.Controls
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Interface IZipCode
Property ZipCode() As String
End Interface
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Class ZipCodeWebPart
Inherits WebPart
Implements IZipCode
Private zipCodeText As String = String.Empty
Private input As TextBox
Private send As Button
Public Sub New()
End Sub
' Make the implemented property personalizable to save
' the Zip Code between browser sessions.
<Personalizable()> _
Public Property ZipCode() As String _
Implements IZipCode.ZipCode
Get
Return zipCodeText
End Get
Set(ByVal value As String)
zipCodeText = value
End Set
End Property
' This is the callback method that returns the provider.
<ConnectionProvider("Zip Code", "ZipCodeProvider")> _
Public Function ProvideIZipCode() As IZipCode
Return Me
End Function
Protected Overrides Sub CreateChildControls()
Controls.Clear()
input = New TextBox()
Me.Controls.Add(input)
send = New Button()
send.Text = "Enter 5-digit Zip Code"
AddHandler send.Click, AddressOf Me.submit_Click
Me.Controls.Add(send)
End Sub
Private Sub submit_Click(ByVal sender As Object, _
ByVal e As EventArgs)
If input.Text <> String.Empty Then
zipCodeText = Page.Server.HtmlEncode(input.Text)
input.Text = String.Empty
End If
End Sub
End Class
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Class WeatherWebPart
Inherits WebPart
Private _provider As IZipCode
Private _zipSearch As String
Private DisplayContent As Label
' This method is identified by the ConnectionConsumer
' attribute, and is the mechanism for connecting with
' the provider.
<ConnectionConsumer("Zip Code", "ZipCodeConsumer")> _
Public Sub GetIZipCode(ByVal Provider As IZipCode)
_provider = Provider
End Sub
Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
EnsureChildControls()
If Not (Me._provider Is Nothing) Then
_zipSearch = _provider.ZipCode.Trim()
DisplayContent.Text = "My Zip Code is: " + _zipSearch
End If
End Sub
Protected Overrides Sub CreateChildControls()
Controls.Clear()
DisplayContent = New Label()
Me.Controls.Add(DisplayContent)
End Sub
End Class
End Namespace
Nadat u de webpagina in een browser hebt geladen, klikt u op het besturingselement voor de vervolgkeuzelijst Weergavemodus en selecteert u Verbinding maken om de pagina over te schakelen naar de verbindingsmodus. De verbindingsmodus maakt gebruik van het <asp:connectionszone> element om verbindingen tussen besturingselementen te maken. Klik in de verbindingsmodus op de pijl-omlaag in de titelbalk van het besturingselement Postcode om het menu werkwoorden te activeren en klik vervolgens op Verbinden. Nadat de gebruikersinterface van de verbinding (UI) wordt weergegeven, ziet u dat er al een verbinding is gemaakt door de code in de Page_Load methode.
Opmerkingen
Deze methode wordt gebruikt om verbinding te maken provider en consumer wanneer beide besturingselementen compatibele verbindingspunttypen hebben, zodat een WebPartTransformer object niet nodig is. U kunt deze methode gebruiken om te controleren of twee besturingselementen kunnen worden verbonden voordat u aanroept ConnectWebParts om een programmatische verbinding te maken.
Deze overbelasting maakt gebruik van dezelfde implementatie als de overbelasting van de CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) methode, met de enige uitzondering dat deze overbelasting geen transformator vereist.
Zie ook
Van toepassing op
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer)
Controleert de WebPart besturingselementen die deelnemen aan een verbinding om te bepalen of ze kunnen worden verbonden en gebruikt een WebPartTransformer object om de verbinding tussen een incompatibele consument en provider te maken.
public:
virtual bool CanConnectWebParts(System::Web::UI::WebControls::WebParts::WebPart ^ provider, System::Web::UI::WebControls::WebParts::ProviderConnectionPoint ^ providerConnectionPoint, System::Web::UI::WebControls::WebParts::WebPart ^ consumer, System::Web::UI::WebControls::WebParts::ConsumerConnectionPoint ^ consumerConnectionPoint, System::Web::UI::WebControls::WebParts::WebPartTransformer ^ transformer);
public virtual bool CanConnectWebParts(System.Web.UI.WebControls.WebParts.WebPart provider, System.Web.UI.WebControls.WebParts.ProviderConnectionPoint providerConnectionPoint, System.Web.UI.WebControls.WebParts.WebPart consumer, System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint consumerConnectionPoint, System.Web.UI.WebControls.WebParts.WebPartTransformer transformer);
abstract member CanConnectWebParts : System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ProviderConnectionPoint * System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint * System.Web.UI.WebControls.WebParts.WebPartTransformer -> bool
override this.CanConnectWebParts : System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ProviderConnectionPoint * System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint * System.Web.UI.WebControls.WebParts.WebPartTransformer -> bool
Public Overridable Function CanConnectWebParts (provider As WebPart, providerConnectionPoint As ProviderConnectionPoint, consumer As WebPart, consumerConnectionPoint As ConsumerConnectionPoint, transformer As WebPartTransformer) As Boolean
Parameters
- provider
- WebPart
Het besturingselement dat gegevens consumer levert wanneer de besturingselementen zijn verbonden.
- providerConnectionPoint
- ProviderConnectionPoint
Een ConnectionPoint die fungeert als een callback-methode, zodat deze provider kan deelnemen aan een verbinding.
- consumer
- WebPart
Het besturingselement dat gegevens ontvangt van provider wanneer de besturingselementen zijn verbonden.
- consumerConnectionPoint
- ConsumerConnectionPoint
Een ConnectionPoint die fungeert als een callback-methode, zodat deze consumer kan deelnemen aan een verbinding.
- transformer
- WebPartTransformer
Een WebPartTransformer die een incompatibele provider verbinding mogelijk maakt en consumer verbinding maakt.
Retouren
Een Booleaanse waarde die aangeeft of provider en consumer een verbinding kan vormen.
Opmerkingen
Deze methode wordt gebruikt om verbinding te maken provider en consumer wanneer beide besturingselementen incompatibele verbindingspunttypen hebben, zodat een WebPartTransformer object vereist is. U kunt deze methode gebruiken om te controleren of twee besturingselementen kunnen worden verbonden voordat u aanroept ConnectWebParts om een programmatische verbinding te maken.
Deze overbelasting maakt gebruik van dezelfde implementatie als de overbelasting van de CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) methode, met de enige uitzondering dat deze overbelasting een transformator vereist.