WebPartConnection.IsActive プロパティ
アセンブリ: System.Web (system.web.dll 内)


IsActive プロパティは、WebPartConnection オブジェクトの状態を示します。接続がこの状態にある場合、接続のプロバイダ コントロールとコンシューマ コントロールが通信中で、共通のインターフェイスまたは WebPartTransformer オブジェクトを通じてデータを交換できます。
レンダリングされたページがユーザーに表示され、通常のブラウズ モードで接続が確立している場合、一般にその接続はアクティブです。ただし、何らかの競合が発生していたり、ページの読み込み時にその他の問題が生じたりして、接続をアクティブにできなかった場合を除きます。ページとコントロールの有効期間における初期の段階では、このプロパティ値は false です。WebPartManager コントロールで ConnectionsActivated イベントが発生した直後に、接続がアクティブになります。具体的には、コンシューマが、プロバイダまたは WebPartTransformer オブジェクトから特定のインターフェイスのインスタンスを取得した後に接続がアクティブになります。
これは、ページ上に複数の接続が存在することが原因で、競合の問題または同期の問題が発生する可能性がある状況で、接続がアクティブかどうかを把握する場合に役立ちます。たとえば、2 つの接続の間に何らかの競合が発生している場合は、WebPartManager コントロールで接続の 1 つをアクティブにしないように指定して、競合を防止できます。

IsActive プロパティを使用するコード例を次に示します。
コード例の最初の部分は、インターフェイスのソース コード、およびコンシューマ コントロールとプロバイダ コントロールのソース コードです。コード例を実行するためには、このソース コードをコンパイルする必要があります。それを明示的にコンパイルし、コンパイル済みのアセンブリを Web サイトの Bin フォルダまたはグローバル アセンブリ キャッシュに配置できます。サイトの App_Code フォルダにソース コードを配置し、実行時に動的にコンパイルすることもできます。このコード例は、動的コンパイルを使用します。コンパイル方法を示すチュートリアルについては、「チュートリアル : カスタム サーバー コントロールの開発と使用」を参照してください。
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
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 (input.Text != String.Empty) { 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); } } }
コード例の 2 番目の部分は Web ページです。先頭近くに、2 つの動的にコンパイルされた WebPart コントロールのソース コードを参照する Register ディレクティブがあります。ページの <StaticConnections> 要素内に静的接続が宣言されています。<script> 要素内に 4 つのイベント ハンドラがあります。それぞれのイベント ハンドラが、静的接続の IsActive プロパティの値をチェックし、ページおよびコントロールの有効期間のその時点の状態について、接続がアクティブかどうかを示すメッセージを Label コントロールに書き込みます。この例は、どの時点で接続がアクティブになるかを示し、ページを表示した後もアクティブのままになることを示します。
<%@ 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 > <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>
<%@ 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 > <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>
ブラウザにページを読み込みます。既に静的接続が作成され、ページおよびコントロールの有効期間のさまざまな時点で接続がアクティブであったかどうかを示すメッセージが既にラベルに書き込まれています。[Connection Details] をクリックし、その時点で接続がアクティブでなくても、ConnectionsActivated イベントが発生するたびに接続が再びアクティブになり、ページの PreRender イベントが発生した後もアクティブのままになることを確認します。

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からWebPartConnection.IsActive プロパティを検索する場合は、下記のリンクをクリックしてください。

- WebPartConnection.IsActive プロパティのページへのリンク