WebPartConnection.IsActive Property

 

Gets a value that indicates whether a WebPartConnection object is currently established and able to exchange data between its provider and consumer controls.

Namespace:   System.Web.UI.WebControls.WebParts
Assembly:  System.Web (in System.Web.dll)

<BrowsableAttribute(False)>
Public ReadOnly Property IsActive As Boolean

Property Value

Type: System.Boolean

true if the connection is active; otherwise, false.

The IsActive property indicates a state of a WebPartConnection object. When the connection is in this state, the provider and consumer controls in the connection are communicating and able to exchange data through a common interface or a WebPartTransformer object.

When a user views a rendered page that includes an established connection in normal browse mode, the connection is typically active (unless it failed to be activated due to some conflict or other issue when the page loaded). In the early stages of the page and control life cycle, the property value is false. The connection is activated just after the ConnectionsActivated event on the WebPartManager control is raised. Specifically, the connection is activated after the consumer has retrieved an instance of the specified interface from the provider or a WebPartTransformer object.

It is useful to know whether a connection is active in situations where there might be conflicts or synchronization issues due to multiple connections on a page. For example, if there is some kind of conflict between two connections, the WebPartManager control has the option of not activating one of the connections to avoid the conflict.

The following code example demonstrates use of the IsActive property.

The example has three parts:

  • Source code for an interface and two WebPart controls acting as the provider and the consumer for a connection.

  • A Web page to host all the controls and run the code example.

  • An explanation of how to run the example page.

The first part of the code example is the source code for the interface, and the consumer and provider controls. For the code example to run, you must compile this source code. You can compile it explicitly and put the resulting assembly in your Web site's Bin folder or the global assembly cache. Alternatively, you can put the source code in your site's App_Code folder, where it will be dynamically compiled at run time. This code example uses dynamic compilation. For a walkthrough that demonstrates how to compile, see Walkthrough: Developing and Using a Custom Web Server Control.

Imports System
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 'OnPreRender

    Protected Overrides Sub CreateChildControls()
      Controls.Clear()
      DisplayContent = New Label()
      Me.Controls.Add(DisplayContent)

    End Sub

  End Class

End Namespace

The second part of the code example is the Web page. Near the top is a Register directive that refers to the source code for the two dynamically compiled WebPart controls. The static connection is declared within the <StaticConnections> element on the page. Within the <script> element are four event handlers. Each event handler checks the value of the IsActive property on the static connection, and writes a message to the Label control indicating whether the connection is active or inactive at that state of the page and control life cycle. This demonstrates at what point the connection becomes active, and that it remains active after the page is rendered.

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

Load the page in a browser. The static connection is already created, and messages have already been written to the labels showing whether the connection was active at various points in the page and control life cycle. Click the Connection Details button, and note that the connection is not active at that point, but that the connection is reactivated each time after the ConnectionsActivated event, and that it is still active (and will remain so) after the PreRender event of the page.

.NET Framework
Available since 2.0
Return to top
Show: