WebPartManager.System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty プロパティ
アセンブリ: System.Web (system.web.dll 内)

Private ReadOnly Property System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty As Boolean Implements IPersonalizable.IsDirty
Dim instance As WebPartManager Dim value As Boolean value = CType(instance, IPersonalizable).IsDirty
private: virtual property bool System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty { bool get () sealed = IPersonalizable::IsDirty::get; }
パーソナル化状態データが変更されたかどうかを示すブール値。

System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty プロパティには、WebPartManager コントロールによって管理されているパーソナル化状態データが変更されたかどうかを呼び出し元が判断する方法が用意されています。たとえば、ページ レイアウトの変更、接続の作成または削除、コントロールの追加または削除など、ユーザーがページ レベルの詳細をパーソナル化すると、WebPartManager コントロールが管理しているパーソナル化データが変更されます。これは、保護された IsCustomPersonalizationStateDirty プロパティの値を呼び出し元に返すパススルー メソッドであり、呼び出し元はこのメソッドに直接アクセスできません。
![]() |
---|
System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty プロパティは、パーソナル化できるプロパティ値、または個々の WebPart コントロールの外観に影響を与える個別のプロパティが変更されたかどうかは示しません。コントロール レベルのパーソナル化は、コントロールごとに追跡されます。System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty プロパティは、ページ レベルにあり WebPartManager コントロールで管理されているパーソナル化データが変更されたかどうかだけを示します。 |
次の一覧に、System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty プロパティが true の値を返し、WebPartManager コントロールでパーソナル化データに何らかの変更が行われたことを示す、いくつかの一般的なパーソナル化のインスタンスを示します。
-
ページ上の静的な WebPart コントロール (あるいは、サーバー コントロールまたはユーザー コントロール) を終了します。
-
WebPart コントロールまたはサーバー コントロールのカタログからコントロールを追加するか、またはプログラムでコントロールを追加します。
-
プログラムまたは接続ユーザー インターフェイス (UI) を使用して、2 つの WebPart コントロールの間に接続を作成します。
このプロパティ値にアクセスするには、WebPartManager コントロール インスタンスを IPersonalizable インターフェイスにキャストする必要があります。この後、IsDirty プロパティ値を読み取ることができます。

System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty プロパティの簡単な使用方法のコード例を次に示します。このコード例では、WebPartManager コントロールのパーソナル化データを変更する、いくつかの一般的なページのパーソナル化インスタンスを示します。
コード例の最初の部分は、表示モードを変更するユーザー コントロールです。このユーザー コントロールのソース コードは、WebPartManager クラスの概要の「例」から取得できます。表示モードの詳細およびユーザー コントロールの動作方法の詳細については、「チュートリアル : Web パーツ ページでの表示モードの変更」を参照してください。
コード例の 2 番目の部分は、カスタム コントロールとインターフェイスのソース ファイルです。IZipCode インターフェイスは 1 つのメソッドを公開します。このメソッドをカスタム ZipCodeWebPart コントロールに実装すると、コールバック メソッドとして機能し、ZipCodeWebPart は接続時にプロバイダとして動作できるようになります。他の WeatherWebPart コントロールは接続のコンシューマ コントロールとして動作し、ZipCodeWebPart によって用意された特定のインターフェイスを使用できます。実際のアプリケーションでは、WeatherWebPart は、プロバイダからのパーソナル化された郵便番号の値を使用して、ユーザーに気象予報図を提供します。
コード例を実行するためには、このソース コードをコンパイルする必要があります。それを明示的にコンパイルし、コンパイル済みのアセンブリを Web サイトの Bin フォルダまたはグローバル アセンブリ キャッシュに配置できます。サイトの App_Code フォルダにソース コードを配置し、実行時に動的にコンパイルすることもできます。このコード例は動的コンパイルを使用します。このため、Web ページの先頭にあるこのコンポーネントの Register ディレクティブには、Assembly 属性を除いた、TagPrefix 属性と Namespace 属性だけが含まれています。コンパイル方法を示すチュートリアルについては、「チュートリアル : カスタム サーバー コントロールの開発と使用」を参照してください。
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", "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 '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", "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", "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); } } }
コード例の 3 番目の部分は Web ページです。これには、2 つの WebPartZone ゾーンがあり、最初のゾーンに 2 つのカスタム WebPart コントロールが配置されています。また、CatalogZone ゾーンがあり、これには、ユーザーがページに追加できる標準 Calendar コントロールが配置されています。<asp:connectionszone> 要素は、コントロール間に接続を作成するための接続 UI をユーザーに提供します。Page_PreRender メソッドで、パーソナル化データが変更されたかどうかをチェックし、変更された場合は、Label1 のテキストを更新します。
<%@ Page Language="vb" %> <%@ Register TagPrefix="uc1" TagName="DisplayModeMenuVB" Src="~/displaymodemenuvb.ascx" %> <%@ 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 Page_PreRender(ByVal sender As Object, _ ByVal e As System.EventArgs) ' Clear the label if it has a previously set value. Label1.Text = String.Empty ' Cast the WebPartManager to the IPersonalizable interface ' so that you can access the property. Dim stateData As IPersonalizable = CType(mgr1, IPersonalizable) If stateData.IsDirty Then Label1.Text = "WebPartManager personalization data is dirty." End If End Sub Protected Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Dim provPoint As ProviderConnectionPoint = _ mgr1.GetProviderConnectionPoints(zip1)("ZipCodeProvider") Dim connPoint As ConsumerConnectionPoint = _ mgr1.GetConsumerConnectionPoints(weather1)("ZipCodeConsumer") Dim conn1 As WebPartConnection = _ mgr1.ConnectWebParts(zip1, provPoint, weather1, connPoint) End Sub </script> <html > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:WebPartManager ID="mgr1" runat="server" /> <uc1:DisplayModeMenuVB ID="menu1" runat="server" /> <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:WebPartZone ID="WebPartZone2" runat="server"> <ZoneTemplate> </ZoneTemplate> </asp:WebPartZone> <asp:CatalogZone ID="CatalogZone1" runat="server"> <ZoneTemplate> <asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1" runat="server"> <WebPartsTemplate> <asp:Calendar ID="Calendar1" runat="server" Title="My Calendar" /> </WebPartsTemplate> </asp:DeclarativeCatalogPart> <asp:PageCatalogPart ID="PageCatalogPart1" runat="server" /> </ZoneTemplate> </asp:CatalogZone> <asp:ConnectionsZone ID="ConnectionsZone1" runat="server" /> <asp:Button ID="Button1" runat="server" Text="Connect WebPart Controls" OnClick="Button1_Click" /> <hr /> <asp:Label ID="Label1" runat="server" Text="" Font-Bold="true" /> </div> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Register TagPrefix="uc1" TagName="DisplayModeMenuCS" Src="~/displaymodemenucs.ascx" %> <%@ 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 Page_PreRender(object sender, EventArgs e) { // Clear the label if it has a previously set value. Label1.Text = String.Empty; // Cast the WebPartManager to the IPersonalizable interface // so that you can access the property. IPersonalizable stateData = (IPersonalizable)mgr1; if (stateData.IsDirty) Label1.Text = "WebPartManager personalization data is dirty."; } protected void Button1_Click(object sender, EventArgs e) { ProviderConnectionPoint provPoint = mgr1.GetProviderConnectionPoints(zip1)["ZipCodeProvider"]; ConsumerConnectionPoint connPoint = mgr1.GetConsumerConnectionPoints(weather1)["ZipCodeConsumer"]; WebPartConnection conn1 = mgr1.ConnectWebParts(zip1, provPoint, weather1, connPoint); } </script> <html > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:WebPartManager ID="mgr1" runat="server" /> <uc1:DisplayModeMenuCS ID="menu1" runat="server" /> <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:WebPartZone ID="WebPartZone2" runat="server"> <ZoneTemplate> </ZoneTemplate> </asp:WebPartZone> <asp:CatalogZone ID="CatalogZone1" runat="server"> <ZoneTemplate> <asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1" runat="server"> <WebPartsTemplate> <asp:Calendar ID="Calendar1" runat="server" Title="My Calendar" /> </WebPartsTemplate> </asp:DeclarativeCatalogPart> <asp:PageCatalogPart ID="PageCatalogPart1" runat="server" /> </ZoneTemplate> </asp:CatalogZone> <asp:ConnectionsZone ID="ConnectionsZone1" runat="server" /> <asp:Button ID="Button1" runat="server" Text="Connect WebPart Controls" OnClick="Button1_Click" /> <hr /> <asp:Label ID="Label1" runat="server" Text="" Font-Bold="true" /> </div> </form> </body> </html>
ブラウザにページを読み込んだ後、このトピックの「解説」に示した、パーソナル化データを変更するいくつかのシナリオを作成します。さまざまな変更を行うと、その変更が WebPartManager コントロールで追跡されるパーソナル化のシナリオの 1 つに関係する場合に、パーソナル化データが変更されたことを示す Label1 コントロールのテキストが表示されます。たとえば、次の変更を行うことができます。
-
[Display Mode] ドロップダウン リスト コントロールを使用してページをカタログ モードに切り替え、[My Calendar] コントロールを 2 番目の WebPartZone ゾーンに追加します。
-
ページをブラウズ モードに戻し、[My Calendar] コントロールの動詞メニュー (タイトル バーに矢印記号で表示) をクリックし、[閉じる] を選択してこのコントロールを終了し、ページ カタログに追加します。
-
[Display Mode] コントロールを使用してページをデザイン モードに切り替え、1 つ以上のコントロールを別のゾーン、または同じゾーン内の別の位置までドラッグして、コントロールのレイアウトを再配置します。

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に収録されているすべての辞書からWebPartManager.System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty プロパティを検索する場合は、下記のリンクをクリックしてください。

- WebPartManager.System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty プロパティのページへのリンク