WebPartManager.CanConnectWebParts Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Comprueba los controles WebPart que participarán en una conexión para determinar si son capaces de conectarse.
Sobrecargas
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) |
Comprueba los controles WebPart que participarán en una conexión para determinar si son capaces de conectarse, cuando los controles consumidor y proveedor tienen interfaces compatibles y no se necesita un objeto WebPartTransformer. |
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) |
Comprueba los controles WebPart que van a participar en una conexión para determinar si pueden conectarse y utiliza un objeto WebPartTransformer para crear la conexión entre un consumidor y un proveedor incompatibles. |
Comentarios
El CanConnectWebParts método se usa para determinar si se pueden conectar dos WebPart controles. El método se usa normalmente como comprobación condicional antes de llamar al ConnectWebParts método .
El CanConnectWebParts método comprueba un número de criterios que se deben cumplir antes de que dos controles puedan formar una conexión. En la lista siguiente se resumen los criterios principales para realizar una conexión. Si se cumplen todos estos criterios (además de algunas condiciones internas adicionales), el método devuelve true
, lo que significa que los controles se pueden conectar:
Los controles de proveedor y consumidor no pueden ser
null
, y deben estar contenidos en la colección de controles a los que hace referencia la WebParts propiedad .El proveedor y el consumidor no pueden ser el mismo control. Es decir, un WebPart control no puede conectarse a sí mismo.
Los ConnectionPoint objetos (puntos de conexión) para el proveedor y el consumidor no pueden ser
null
.El proveedor y el consumidor no se pueden cerrar (ni la propiedad del IsClosed control puede ser
true
).La ControlType propiedad del control de punto de conexión debe coincidir con el tipo del control del consumidor y del proveedor.
Los puntos de conexión deben estar habilitados (sus GetEnabled métodos deben devolver
true
).Cada punto de conexión no debe intentar formar más conexiones de las especificadas en su propia AllowsMultipleConnections propiedad.
Si se requiere un WebPartTransformer objeto (transformador) para conectar controles incompatibles, no puede ser
null
. Sin embargo, si los controles ya son compatibles, el transformador debe sernull
.Se debe hacer referencia al transformador (si se utiliza) en la AvailableTransformers colección.
El transformador (si se usa) debe tener interfaces compatibles con el proveedor y el consumidor para que pueda transformar los datos entre los dos controles. Las interfaces secundarias del consumidor y el proveedor también deben ser compatibles.
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint)
Comprueba los controles WebPart que participarán en una conexión para determinar si son capaces de conectarse, cuando los controles consumidor y proveedor tienen interfaces compatibles y no se necesita un objeto 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
Parámetros
- provider
- WebPart
Control que proporciona datos a consumer
cuando se conectan los controles.
- providerConnectionPoint
- ProviderConnectionPoint
Clase ConnectionPoint que permite a provider
participar en una conexión.
- consumer
- WebPart
Control que recibe datos de provider
cuando se conectan los controles.
- consumerConnectionPoint
- ConsumerConnectionPoint
Clase ConnectionPoint que actúa como método de devolución de llamada para que consumer
pueda participar en una conexión.
Devoluciones
Valor booleano que indica si provider
y consumer
se pueden conectar.
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar este método.
El ejemplo de código tiene cuatro partes:
Control de usuario que permite cambiar los modos de visualización en una página de elementos web.
Página web que contiene dos controles personalizados WebPart que se pueden conectar, un
<asp:webpartmanager>
elemento y algún código de control de eventos que crea una conexión mediante el CanConnectWebParts método .Un archivo de código fuente que contiene dos controles personalizados WebPart y una interfaz personalizada.
Explicación de cómo funciona el ejemplo en un explorador.
La primera parte del ejemplo de código es el control de usuario para cambiar los modos de visualización. Puede obtener el código fuente del control de usuario en la sección Ejemplo de la información general de la WebPartManager clase. Para obtener más información sobre los modos de visualización y cómo funciona el control de usuario, vea Tutorial: Cambiar modos de presentación en una página de elementos web.
El marcado declarativo de la página web contiene Register
directivas para el control de usuario y los controles personalizados. Hay un <asp:webpartmanager>
elemento , un <asp:webpartzone>
elemento que contiene los controles personalizados y un <asp:connectionszone>
elemento . Observe que en el Page_Load
método , el código comprueba si se puede realizar la conexión y, si es así, define un proveedor, un consumidor y sus respectivos puntos de conexión y, a continuación, agrega una nueva conexión al conjunto de conexiones estáticas a las que hace referencia la StaticConnections propiedad .
<%@ 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 tercera parte del ejemplo es el código fuente de los controles. Contiene una interfaz y dos controles personalizados WebPart , uno que actúa como proveedor y el otro como consumidor. Dado que tienen puntos de conexión compatibles (ambos reconocen la IZipCode
interfaz), no es necesario un transformador para establecer la conexión. Para que se ejecute el ejemplo de código, debe compilar este código fuente. Puede compilarlo explícitamente y colocar el ensamblado resultante en la carpeta Bin del sitio web o en la caché global de ensamblados. Como alternativa, puede colocar el código fuente en la carpeta App_Code del sitio, donde se compilará dinámicamente en tiempo de ejecución. Para ver un tutorial que muestra cómo compilar, consulte Tutorial: Desarrollo y uso de un control de servidor web personalizado.
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
Después de cargar la página web en un explorador, haga clic en el control de lista desplegable Modo de visualización y seleccione Conectar para cambiar la página al modo de conexión. El modo de conexión usa el <asp:connectionszone>
elemento para permitirle crear conexiones entre controles. En el modo de conexión, haga clic en la flecha hacia abajo en la barra de título del control código postal para activar su menú de verbos y, a continuación, haga clic en Conectar. Una vez que aparezca la interfaz de usuario (UI) de conexión, observe que el código incluido en el Page_Load
método ya ha creado una conexión.
Comentarios
Este método se usa para conectarse provider
y consumer
cuando ambos controles tienen tipos de punto de conexión compatibles, de modo que WebPartTransformer un objeto no sea necesario. Es posible que desee usar este método para comprobar que se pueden conectar dos controles antes de llamar ConnectWebParts a para crear una conexión mediante programación.
Esta sobrecarga usa la misma implementación que la sobrecarga del CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) método, con la única excepción de que esta sobrecarga no requiere un transformador.
Consulte también
Se aplica a
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer)
Comprueba los controles WebPart que van a participar en una conexión para determinar si pueden conectarse y utiliza un objeto WebPartTransformer para crear la conexión entre un consumidor y un proveedor incompatibles.
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
Parámetros
- provider
- WebPart
Control que proporciona datos a consumer
cuando se conectan los controles.
- providerConnectionPoint
- ProviderConnectionPoint
Clase ConnectionPoint que actúa como método de devolución de llamada para que provider
pueda participar en una conexión.
- consumer
- WebPart
Control que recibe datos de provider
cuando se conectan los controles.
- consumerConnectionPoint
- ConsumerConnectionPoint
Clase ConnectionPoint que actúa como método de devolución de llamada para que consumer
pueda participar en una conexión.
- transformer
- WebPartTransformer
Objeto WebPartTransformer que permite conectar un provider
y un consumer
incompatibles.
Devoluciones
Valor booleano que indica si provider
y consumer
pueden formar una conexión.
Comentarios
Este método se usa para conectarse provider
y consumer
cuando ambos controles tienen tipos de punto de conexión incompatibles, de modo que se requiera un WebPartTransformer objeto. Es posible que desee usar este método para comprobar que se pueden conectar dos controles antes de llamar ConnectWebParts a para crear una conexión mediante programación.
Esta sobrecarga usa la misma implementación que la sobrecarga del CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) método, con la única excepción de que esta sobrecarga requiere un transformador.