WebPartConnection.IsActive Propiedad

Definición

Obtiene un valor que indica si en la actualidad hay un objeto WebPartConnection establecido y disponible para intercambiar datos entre sus controles proveedor y consumidor.

public:
 property bool IsActive { bool get(); };
[System.ComponentModel.Browsable(false)]
public bool IsActive { get; }
[<System.ComponentModel.Browsable(false)>]
member this.IsActive : bool
Public ReadOnly Property IsActive As Boolean

Valor de propiedad

Es true si la conexión está activa; de lo contrario, es false.

Atributos

Ejemplos

En el ejemplo de código siguiente se muestra el uso de la IsActive propiedad .

El ejemplo tiene tres partes:

  • Código fuente de una interfaz y dos WebPart controles que actúan como proveedor y consumidor para una conexión.

  • Una página web para hospedar todos los controles y ejecutar el ejemplo de código.

  • Explicación de cómo ejecutar la página de ejemplo.

La primera parte del ejemplo de código es el código fuente de la interfaz y los controles de consumidor y proveedor. 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. En este ejemplo de código se usa la compilación dinámica. Para ver un tutorial que muestra cómo compilar, vea 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 Provider", "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 Consumer", "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 Provider", "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 Consumer", "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

La segunda parte del ejemplo de código es la página web. Cerca de la parte superior hay una Register directiva que hace referencia al código fuente de los dos controles compilados WebPart dinámicamente. La conexión estática se declara dentro del <StaticConnections> elemento de la página. Dentro del <script> elemento hay cuatro controladores de eventos. Cada controlador de eventos comprueba el valor de la IsActive propiedad en la conexión estática y escribe un mensaje en el Label control que indica si la conexión está activa o inactiva en ese estado de la página y del ciclo de vida del control. Esto muestra en qué momento la conexión se activa y que permanece activa después de representar la página.

<%@ 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">

<script runat="server">
  
  protected void Button1_Click(object sender, EventArgs e)
  {
    WebPartConnection conn = mgr.StaticConnections[0];
    
    if (conn.IsActive)
      lbl1.Text += "<em>Connection 0 is active.</em>";
    else
      lbl1.Text += "Connection 0 is inactive.";
  }

  protected void mgr_ConnectionsActivated(object sender, EventArgs e)
  {
    if(mgr.Connections[0].IsActive)
      lbl2.Text += "<em>Connection 0 is active.</em>";
    else
      lbl2.Text += "Connection 0 is inactive.";
  }

  protected void mgr_ConnectionsActivating(object sender, EventArgs e)
  {
    if (mgr.Connections[0].IsActive)
      lbl3.Text += "<em>Connection 0 is active.</em>";
    else
      lbl3.Text += "Connection 0 is inactive.";
  }

  protected void Page_PreRender(object sender, EventArgs e)
  {
    if (mgr.Connections[0].IsActive)
      lbl4.Text += "<em>Connection 0 is active.</em>";
    else
      lbl4.Text += "Connection 0 is inactive.";
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="mgr" runat="server" 
        onconnectionsactivated="mgr_ConnectionsActivated" 
        onconnectionsactivating="mgr_ConnectionsActivating">
        <StaticConnections>
          <asp:WebPartConnection ID="conn1"
            ConsumerConnectionPointID="ZipCodeConsumer"
            ConsumerID="weather1" 
            ProviderConnectionPointID="ZipCodeProvider" 
            ProviderID="zip1" />
        </StaticConnections>      
      </asp:WebPartManager>
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <aspSample:ZipCodeWebPart ID="zip1" runat="server"
            Title="Zip Code Provider"   />
          <aspSample:WeatherWebPart ID="weather1" runat="server" 
            Title="Zip Code Consumer" />
        </ZoneTemplate>
      </asp:WebPartZone>
      <asp:ConnectionsZone ID="ConnectionsZone1" runat="server">
      </asp:ConnectionsZone>
      <asp:Button ID="Button1" runat="server" 
        Text="Connection Details" 
        OnClick="Button1_Click" />
      <br />
      <asp:Label ID="lbl1" runat="server">
        <h3>Button_Click Status</h3>
      </asp:Label>
      <br />
      <asp:Label ID="lbl2" runat="server">
        <h3>ConnectionActivating Status</h3>
      </asp:Label>
      <br />
      <asp:Label ID="lbl3" runat="server">
        <h3>ConnectionActivated Status</h3>
      </asp:Label>
      <br />
      <asp:Label ID="lbl4" runat="server">
        <h3>ConnectionActivated Status</h3>
      </asp:Label>
    </div>
    </form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Register TagPrefix="aspSample" 
    Namespace="Samples.AspNet.VB.Controls" %>
    
<!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 Button1_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs)
    
    Dim conn As WebPartConnection = mgr.StaticConnections(0)
    
    If conn.IsActive Then
      lbl1.Text += "<em>Connection 0 is active.</em>"
    Else
      lbl1.Text += "Connection 0 is inactive."
    End If
    
  End Sub
    
  Protected Sub mgr_ConnectionsActivated(ByVal sender As Object, _
    ByVal e As System.EventArgs)
    
    If mgr.Connections(0).IsActive Then
      lbl2.Text += "<em>Connection 0 is active.</em>"
    Else
      lbl2.Text += "Connection 0 is inactive."
    End If
    
  End Sub

  Protected Sub mgr_ConnectionsActivating(ByVal sender As Object, _
    ByVal e As System.EventArgs)

    If mgr.Connections(0).IsActive Then
      lbl3.Text += "<em>Connection 0 is active.</em>"
    Else
      lbl3.Text += "Connection 0 is inactive."
    End If
    
  End Sub

  Protected Sub Page_PreRender(ByVal sender As Object, _
    ByVal e As System.EventArgs)

    If mgr.Connections(0).IsActive Then
      lbl4.Text += "<em>Connection 0 is active.</em>"
    Else
      lbl4.Text += "Connection 0 is inactive."
    End If
    
  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="mgr" runat="server" 
        OnConnectionsActivated="mgr_ConnectionsActivated" 
        OnConnectionsActivating="mgr_ConnectionsActivating">
        <StaticConnections>
          <asp:WebPartConnection ID="conn1"
            ConsumerConnectionPointID="ZipCodeConsumer"
            ConsumerID="weather1" 
            ProviderConnectionPointID="ZipCodeProvider" 
            ProviderID="zip1" />
        </StaticConnections>      
      </asp:WebPartManager>
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <aspSample:ZipCodeWebPart ID="zip1" runat="server"
            Title="Zip Code Provider"   />
          <aspSample:WeatherWebPart ID="weather1" runat="server" 
            Title="Zip Code Consumer" />
        </ZoneTemplate>
      </asp:WebPartZone>
      <asp:ConnectionsZone ID="ConnectionsZone1" runat="server">
      </asp:ConnectionsZone>
      <asp:Button ID="Button1" runat="server" 
        Text="Connection Details" 
        OnClick="Button1_Click" />
      <br />
      <asp:Label ID="lbl1" runat="server">
        <h3>Button_Click Status</h3>
      </asp:Label>
      <br />
      <asp:Label ID="lbl2" runat="server">
        <h3>ConnectionActivating Status</h3>
      </asp:Label>
      <br />
      <asp:Label ID="lbl3" runat="server">
        <h3>ConnectionActivated Status</h3>
      </asp:Label>
      <br />
      <asp:Label ID="lbl4" runat="server">
        <h3>ConnectionActivated Status</h3>
      </asp:Label>
    </div>
    </form>
</body>
</html>

Cargue la página en un explorador. La conexión estática ya se ha creado y los mensajes ya se han escrito en las etiquetas que muestran si la conexión estaba activa en varios puntos de la página y el ciclo de vida del control. Haga clic en el botón Detalles de conexión y tenga en cuenta que la conexión no está activa en ese momento, pero que la conexión se reactiva cada vez después del ConnectionsActivated evento y que todavía está activa (y permanecerá así) después del PreRender evento de la página.

Comentarios

La IsActive propiedad indica un estado de un WebPartConnection objeto . Cuando la conexión está en este estado, los controles de proveedor y consumidor de la conexión se comunican y pueden intercambiar datos a través de una interfaz común o un WebPartTransformer objeto.

Cuando un usuario ve una página representada que incluye una conexión establecida en el modo de exploración normal, la conexión suele estar activa (a menos que no se haya podido activar debido a algún conflicto u otro problema al cargar la página). En las primeras fases del ciclo de vida de la página y del control, el valor de la propiedad es false. La conexión se activa justo después de que se genere el ConnectionsActivated evento en el WebPartManager control. En concreto, la conexión se activa después de que el consumidor haya recuperado una instancia de la interfaz especificada del proveedor o un WebPartTransformer objeto.

Es útil saber si una conexión está activa en situaciones en las que puede haber conflictos o problemas de sincronización debido a varias conexiones en una página. Por ejemplo, si hay algún tipo de conflicto entre dos conexiones, el WebPartManager control tiene la opción de no activar una de las conexiones para evitar el conflicto.

Se aplica a

Consulte también