WebPartManager.CanConnectWebParts Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Verifica i controlli WebPart che prenderanno parte a una connessione per determinare se possono essere connessi.
Overload
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) |
Verifica i controlli WebPart che prenderanno parte a una connessione per determinare se possono essere connessi, quando i controlli consumer e provider dispongono di interfacce compatibili e non è necessario un oggetto WebPartTransformer. |
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) |
Verifica i controlli WebPart che prenderanno parte a una connessione per determinare se è possibile connetterli e utilizza un oggetto WebPartTransformer per creare la connessione tra un consumer incompatibile e un provider. |
Commenti
Il CanConnectWebParts metodo viene utilizzato per determinare se è possibile connettere due WebPart controlli. Il metodo viene in genere usato come controllo condizionale prima di chiamare il ConnectWebParts metodo .
Il CanConnectWebParts metodo controlla un certo numero di criteri che devono essere soddisfatti prima che due controlli possano formare una connessione. L'elenco seguente riepiloga i criteri principali per stabilire una connessione. Se vengono soddisfatti tutti questi criteri (più alcune condizioni interne aggiuntive), il metodo restituisce true
, ovvero che i controlli possono essere connessi:
Il provider e i controlli consumer non possono essere
null
e devono essere contenuti nell'insieme di controlli a cui fa riferimento la WebParts proprietà .Il provider e il consumer non possono essere lo stesso controllo. In altre parole, un WebPart controllo non può connettersi a se stesso.
Gli ConnectionPoint oggetti (punti di connessione) per il provider e il consumer non possono essere
null
.Il provider e il consumer non possono essere chiusi (nessuna delle proprietà del IsClosed controllo può essere
true
).La ControlType proprietà del controllo del punto di connessione deve corrispondere al tipo del controllo sia del consumer che del provider.
I punti di connessione devono essere abilitati entrambi (i relativi GetEnabled metodi devono restituire
true
entrambi ).Ogni punto di connessione non deve tentare di formare più connessioni rispetto a quanto specificato nella relativa AllowsMultipleConnections proprietà.
Se è necessario un WebPartTransformer oggetto (trasformatore) per connettere controlli incompatibili, non può essere
null
. Tuttavia, se i controlli sono già compatibili, il trasformatore deve esserenull
.È necessario fare riferimento al trasformatore (se utilizzato) nell'insieme AvailableTransformers .
Il trasformatore (se usato) deve avere interfacce compatibili con il provider e il consumer in modo che possa trasformare i dati tra i due controlli. Anche le interfacce secondarie del consumer e del provider devono essere compatibili.
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint)
Verifica i controlli WebPart che prenderanno parte a una connessione per determinare se possono essere connessi, quando i controlli consumer e provider dispongono di interfacce compatibili e non è necessario un oggetto WebPartTransformer.
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
Parametri
- provider
- WebPart
Controllo che fornisce dati al controllo consumer
quando i controlli sono connessi.
- providerConnectionPoint
- ProviderConnectionPoint
Classe ConnectionPoint che consente al controllo provider
di prendere parte a una connessione.
- consumer
- WebPart
Controllo che riceve dati dal controllo provider
quando i controlli sono connessi.
- consumerConnectionPoint
- ConsumerConnectionPoint
Classe ConnectionPoint che funge da metodo di callback in modo che il controllo consumer
possa prendere parte a una connessione.
Restituisce
Valore Boolean che indica se i controlli provider
e consumer
possono essere connessi.
Esempio
Nell'esempio di codice seguente viene illustrato come usare questo metodo.
L'esempio di codice ha quattro parti:
Controllo utente che consente di modificare le modalità di visualizzazione in una pagina web part.
Pagina Web che contiene due controlli personalizzati WebPart che possono essere connessi, un
<asp:webpartmanager>
elemento e un codice di gestione degli eventi che crea una connessione usando il CanConnectWebParts metodo .File di codice sorgente che contiene due controlli personalizzati WebPart e un'interfaccia personalizzata.
Spiegazione del funzionamento dell'esempio in un browser.
La prima parte dell'esempio di codice è il controllo utente per modificare le modalità di visualizzazione. È possibile ottenere il codice sorgente per il controllo utente dalla sezione Esempio della panoramica della WebPartManager classe. Per altre informazioni sulle modalità di visualizzazione e sul funzionamento del controllo utente, vedere Procedura dettagliata: Modifica delle modalità di visualizzazione in una pagina web part.
Il markup dichiarativo per la pagina Web contiene Register
direttive sia per il controllo utente che per i controlli personalizzati. È presente un <asp:webpartmanager>
elemento , un <asp:webpartzone>
elemento che contiene i controlli personalizzati e un <asp:connectionszone>
elemento . Si noti che nel metodo il Page_Load
codice controlla se è possibile stabilire la connessione e, in tal caso, definisce un provider, un consumer e i rispettivi punti di connessione e quindi aggiunge una nuova connessione al set di connessioni statiche a cui fa riferimento la StaticConnections proprietà .
<%@ 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>
La terza parte dell'esempio è il codice sorgente per i controlli. Contiene un'interfaccia e due controlli personalizzati WebPart , uno che funge da provider e l'altro come consumer. Poiché hanno punti di connessione compatibili (entrambi riconoscono l'interfaccia IZipCode
), non è necessario un trasformatore per stabilire la connessione. Per eseguire l'esempio di codice, è necessario compilare questo codice sorgente. È possibile compilarlo in modo esplicito e inserire l'assembly risultante nella cartella Bin del sito Web o nella Global Assembly Cache. In alternativa, è possibile inserire il codice sorgente nella cartella App_Code del sito, in cui verrà compilato in modo dinamico in fase di esecuzione. Per una procedura dettagliata che illustra come eseguire la compilazione, vedere Procedura dettagliata: sviluppo e uso di un controllo server Web personalizzato.
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
Dopo aver caricato la pagina Web in un browser, fare clic sul controllo elenco a discesa Modalità di visualizzazione e selezionare Connetti per passare alla modalità di connessione. La modalità di connessione usa l'elemento <asp:connectionszone>
per consentire di creare connessioni tra i controlli. In modalità di connessione fare clic sulla freccia rivolta verso il basso nella barra del titolo del controllo CAP per attivare il menu dei verbi e quindi fare clic su Connetti. Dopo aver visualizzato l'interfaccia utente di connessione, si noti che una connessione è già stata creata dal codice contenuto nel Page_Load
metodo .
Commenti
Questo metodo viene usato per connettersi provider
e consumer
quando entrambi i controlli hanno tipi di punti di connessione compatibili, in modo che un WebPartTransformer oggetto non sia necessario. È possibile usare questo metodo per verificare che due controlli possano essere connessi prima di chiamare ConnectWebParts per creare una connessione a livello di codice.
Questo overload usa la stessa implementazione dell'overload del CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) metodo, con l'unica eccezione che questo overload non richiede un trasformatore.
Vedi anche
Si applica a
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer)
Verifica i controlli WebPart che prenderanno parte a una connessione per determinare se è possibile connetterli e utilizza un oggetto WebPartTransformer per creare la connessione tra un consumer incompatibile e un provider.
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
Parametri
- provider
- WebPart
Controllo che fornisce dati al controllo consumer
quando i controlli sono connessi.
- providerConnectionPoint
- ProviderConnectionPoint
Classe ConnectionPoint che funge da metodo di callback in modo che il controllo provider
possa prendere parte a una connessione.
- consumer
- WebPart
Controllo che riceve dati dal controllo provider
quando i controlli sono connessi.
- consumerConnectionPoint
- ConsumerConnectionPoint
Classe ConnectionPoint che funge da metodo di callback in modo che il controllo consumer
possa prendere parte a una connessione.
- transformer
- WebPartTransformer
Classe WebPartTransformer che consente la connessione tra un provider
incompatibile e un consumer
.
Restituisce
Valore Boolean che indica se i controlli provider
e consumer
possono formare una connessione.
Commenti
Questo metodo viene usato per connettersi provider
e consumer
quando entrambi i controlli hanno tipi di punti di connessione incompatibili, in modo che sia necessario un WebPartTransformer oggetto . È possibile usare questo metodo per verificare che due controlli possano essere connessi prima di chiamare ConnectWebParts per creare una connessione a livello di codice.
Questo overload usa la stessa implementazione dell'overload del CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) metodo, con l'unica eccezione che questo overload richiede un trasformatore.