WebPartManager.System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty-Eigenschaft
Assembly: System.Web (in system.web.dll)
J# unterstützt die Verwendung von expliziten Schnittstellenimplementierungen, aber nicht die Deklaration von neuen expliziten Schnittstellenimplementierungen.
JScript unterstützt die Verwendung von expliziten Schnittstellenimplementierungen, aber nicht die Deklaration von neuen expliziten Schnittstellenimplementierungen.
Eigenschaftenwert
Ein boolescher Wert, der angibt, ob die Personalisierungszustandsdaten geändert wurden.Die System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty-Eigenschaft stellt Aufrufern eine Möglichkeit zur Verfügung, zu bestimmen, ob mit dem WebPartManager-Steuerelement verwaltete Personalisierungszustandsdaten geändert wurden. Wenn Benutzer Details auf der Seitenebene personalisieren, indem sie beispielsweise das Seitenlayout ändern, Verbindungen erstellen oder löschen sowie Steuerelemente hinzufügen oder löschen, werden die mit dem WebPartManager-Steuerelement verwalteten Personalisierungsdaten geändert. Dies ist eine Pass-Through-Methode, die an die Aufrufer den Wert der geschützten IsCustomPersonalizationStateDirty-Eigenschaft zurückgibt, auf die Aufrufer nicht direkt zugreifen können.
Hinweis |
|---|
| Die System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty-Eigenschaft gibt nicht an, ob personalisierbare Eigenschaftenwerte oder einzelne Eigenschaften, die sich auf die Darstellung einzelner WebPart-Steuerelemente auswirken, geändert wurden. Die Personalisierung auf der Steuerelementebene wird für jedes Steuerelement einzeln nachverfolgt. Die System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty-Eigenschaft gibt nur an, ob mit dem WebPartManager-Steuerelement verwaltete Personalisierungsdaten auf der Seitenebene geändert wurden. |
Die folgende Liste enthält einige gängige Personalisierungsinstanzen, die bewirken, dass die System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty-Eigenschaft den Wert true zurückgibt, um anzuzeigen, dass das WebPartManager-Steuerelement Personalisierungsdaten geändert hat:
-
Schließen eines statischen WebPart-Steuerelements (bzw. Server- oder Benutzersteuerelements) auf einer Seite.
-
Wiederherstellen auf einer Seite eines geschlossenen statischen WebPart-Steuerelements aus einem Seitenkatalog.
-
Verschieben von Steuerelementen innerhalb einer Zone oder in eine andere Zone.
-
Hinzufügen eines Steuerelements aus einem Katalog von WebPart-Steuerelementen oder Serversteuerelementen oder programmgesteuertes Hinzufügen eines Steuerelements.
-
Erstellen einer Verbindung zwischen zwei WebPart-Steuerelementen (entweder programmgesteuert oder über die Verbindungsbenutzeroberfläche).
-
Löschen einer Verbindung zwischen zwei WebPart-Steuerelementen (entweder programmgesteuert oder über die Verbindungsbenutzeroberfläche).
Um auf diesen Eigenschaftenwert zuzugreifen, müssen Sie die WebPartManager-Steuerelementinstanz in die IPersonalizable-Schnittstelle umwandeln. Anschließend können Sie den Wert der IsDirty-Eigenschaft lesen.
Im folgenden Codebeispiel wird eine einfache Verwendung der System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty-Eigenschaft veranschaulicht, mit der einige Seitenpersonalisierungsinstanzen angegeben werden, die Änderungen an den Personalisierungsdaten des WebPartManager-Steuerelements bewirken.
Das Codebeispiel besteht aus vier Teilen:
-
Einem Benutzersteuerelement, mit dessen Hilfe Sie die Anzeigemodi auf einer Seite ändern können, die Webparts-Steuerelemente enthält.
-
Einer Quelldatei, die Code für zwei benutzerdefinierte WebPart-Steuerelemente, die verbunden werden können, und eine Schnittstelle enthält.
-
Einer Webseite, die alle Steuerelemente hostet.
-
Einer Erläuterung des Codebeispiels.
Der erste Teil des Codebeispiels ist das Benutzersteuerelement zum Ändern des Anzeigemodus. Den Quellcode für das Benutzersteuerelement finden Sie im Beispielabschnitt der Übersicht über die WebPartManager-Klasse. Informationen zu Anzeigemodi und zur Funktionsweise des Benutzersteuerelements finden Sie unter Exemplarische Vorgehensweise: Wechseln des Anzeigemodus auf einer Webparts-Seite.
Der zweite Teil des Beispiels ist die Quelldatei mit den benutzerdefinierten Steuerelementen und der Schnittstelle. Die IZipCode-Schnittstelle macht eine Methode verfügbar. Diese Methode wird entsprechend der Implementierung im ZipCodeWebPart-Steuerelement als Rückrufmethode verwendet, um es ZipCodeWebPart zu ermöglichen, als Anbieter in einem Verbindungsszenario zu fungieren. Das andere Steuerelement, WeatherWebPart, fungiert als das Consumersteuerelement in einer Verbindung. Es verwendet die von ZipCodeWebPart bereitgestellte Schnittstelle. In einer echten Anwendung könnte WeatherWebPart einen personalisierten PLZ-Wert des Anbieters verwenden, um Benutzern graphische Wetterdaten zur Verfügung zu stellen.
Um das Codebeispiel auszuführen, müssen Sie diesen Quellcode kompilieren. Sie können den Code explizit kompilieren und die sich ergebende Assembly im Ordner Bin der Website oder im globalen Assemblycache ablegen. Alternativ können Sie den Quellcode im Ordner App_Code der Site ablegen, wo er zur Laufzeit dynamisch kompiliert wird. In diesem Codebeispiel wird die dynamische Kompilierung verwendet. Die Register-Direktive für diese Komponente im oberen Bereich der Webseite enthält daher nur das TagPrefix-Attribut und das Namespace-Attribut und kein Assembly-Attribut. Eine exemplarische Vorgehensweise, in der die Kompilierung erläutert wird, finden Sie unter Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Serversteuerelements.
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); } } }
Der dritte Teil des Codebeispiels ist die Webseite. Sie enthält zwei WebPartZone-Zonen, von denen die erste die beiden benutzerdefinierten WebPart-Steuerelemente enthält. Darüber hinaus gibt es eine CatalogZone-Zone, die ein Calendar-Standardsteuerelement enthält, das Benutzer der Seite hinzufügen können. Das <asp:connectionszone>-Element stellt eine Verbindungsbenutzeroberfläche bereit, in der Benutzer Verbindungen zwischen Steuerelementen erstellen können. Die Page_PreRender-Methode prüft, ob die Personalisierungsdaten geändert wurden, und aktualisiert gegebenenfalls den Text von Label1.
<%@ 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 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="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>
Laden Sie die Seite in einem Browser, und versuchen Sie einige der Szenarios zu erzeugen, die in den Hinweisen dieses Themas beschrieben sind und in denen die Personalisierungsdaten geändert werden. Wenn Sie Änderungen vornehmen und eine der Änderungen eines der durch das WebPartManager-Steuerelement nachverfolgten Personalisierungsszenarios betrifft, gibt der Text des Label1-Steuerelements an, dass Personalisierungsdaten geändert wurden. Sie können beispielsweise die folgenden Änderungen vornehmen:
-
Erstellen Sie eine Verbindung zwischen Steuerelementen, indem Sie auf die Schaltfläche Connect WebPart Controls klicken.
-
Schalten Sie die Seite über das Display Mode-Dropdownlisten-Steuerelement in den Katalogmodus um, und fügen Sie das Steuerelement My Calendar in die zweite WebPartZone-Zone ein.
-
Schalten Sie die Seite zurück in den Durchsuchen-Modus, klicken Sie auf das (mit einem Pfeil auf der Titelleiste angezeigte) Verbenmenü für das Steuerelement My Calendar, und wählen Sie Schließen aus, um es zu schließen und dem Seitenkatalog hinzuzufügen.
-
Schalten Sie die Seite in den Katalogmodus zurück, und fügen Sie der Seite das Steuerelement My Calendar erneut hinzu.
-
Schalten Sie die Seite über das Steuerelement Display Mode in den Entwurfsmodus um, und ändern Sie das Layout der Steuerelemente, indem Sie eines oder mehrere Steuerelemente in eine andere Zone oder an eine andere Position innerhalb der Zone verschieben.
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 unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Hinweis