Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Proprietà WebPartManager.IPersonalizable.IsDirty

 

Data di pubblicazione: ottobre 2016

Ottiene un valore che indica se i dati relativi allo stato di personalizzazione gestito dal WebPartManager controllo è stato modificato in una pagina Web.

Spazio dei nomi:   System.Web.UI.WebControls.WebParts
Assembly:  System.Web (in System.Web.dll)

bool IPersonalizable.IsDirty { get; }

Valore proprietà

Type: System.Boolean

Valore booleano che indica se i dati dello stato di personalizzazione sono stato modificato.

Il IPersonalizable.IsDirty proprietà fornisce un modo per i chiamanti per determinare se i dati gestiti da lo stato di personalizzazione di WebPartManager controllo è stato modificato. Quando gli utenti personalizzano dettagli a livello di pagina, ad esempio modifica il layout di pagina, la creazione o eliminazione di connessioni e aggiunta o eliminazione di controlli, i dati di personalizzazione gestito tramite il WebPartManager controllare le modifiche. Si tratta di un metodo pass-through che restituisce ai chiamanti il valore protetto IsCustomPersonalizationStateDirty proprietà, che non sono direttamente accessibili dai chiamanti.

System_CAPS_noteNota

Il IPersonalizable.IsDirty proprietà non indica se i valori delle proprietà personalizzabili o le proprietà che influiscono sull'aspetto dei singoli WebPart controlli, sono stati modificati. Personalizzazione a livello di controllo verrà rilevata singolarmente per ogni controllo. Il IPersonalizable.IsDirty proprietà indica solo se i dati di personalizzazione che è a livello di pagina e gestito dal WebPartManager controllo è stato modificato.

Nell'elenco seguente vengono descritte alcune istanze comuni di personalizzazione che possono provocare il IPersonalizable.IsDirty proprietà per restituire un valore di true, a indicare che il WebPartManager controllo dispone di dati di personalizzazione modificati:

  • Chiusura di un valore statico WebPart controllo (o controllo server o utente) in una pagina.

  • Ripristino di un valore statico chiuso WebPart controllo da un catalogo di pagina a una pagina.

  • Spostamento di un controllo all'interno dell'area o in un'altra area.

  • Aggiunta di un controllo da un catalogo di WebPart o controlli server o aggiunta di un controllo a livello di codice.

  • Creazione di una connessione tra due WebPart controlli, a livello di codice o tramite l'interfaccia utente (UI) di connessione.

  • Eliminazione di una connessione tra due WebPart controlli, a livello di codice o tramite la connessione dell'interfaccia utente.

Per accedere a questo valore della proprietà, è necessario eseguire il cast di WebPartManager istanza del controllo di IPersonalizable interfaccia, è possibile quindi leggere il IsDirty valore della proprietà.

Esempio di codice riportato di seguito viene illustrato un utilizzo semplice della IPersonalizable.IsDirty proprietà, per indicare alcune comuni di personalizzazione della pagina istanze che provocano un WebPartManager la modifica dei dati di personalizzazione del controllo.

Esempio di codice è costituito da quattro parti:

  • Un controllo utente che consente di modificare le modalità di visualizzazione in una pagina che contiene i controlli Web part.

  • Un file di origine che contiene il codice per due personalizzato WebPart controlli che possono essere collegati e un'interfaccia.

  • Una pagina Web che ospita tutti i controlli.

  • Spiegazione del funzionamento dell'esempio di codice.

La prima parte dell'esempio di codice è il controllo utente per la modifica delle modalità di visualizzazione. È possibile ottenere il codice sorgente per il controllo utente dalla sezione degli esempi di WebPartManager Cenni preliminari sulla classe. Per informazioni sulle modalità di visualizzazione e il funzionamento del controllo utente, vedere Walkthrough: Changing Display Modes on a Web Parts Page.

La seconda parte dell'esempio è il file di origine con i controlli personalizzati e l'interfaccia. Si noti che il IZipCode interfaccia espone un metodo e che questo metodo come implementato in personalizzata ZipCodeWebPart controllo funge da un metodo di callback per abilitare ZipCodeWebPart di agire come un provider in uno scenario di connessione. Il controllo, WeatherWebPart, funge da consumer di controllo in una connessione; può utilizzare l'interfaccia fornita da ZipCodeWebPart. In un'applicazione reale, WeatherWebPart potrebbe utilizzare un valore ZIP Code personalizzato dal provider e quindi fornire informazioni grafiche sul tempo agli utenti.

Per un esempio di codice per l'esecuzione, è necessario compilare il codice sorgente. È possibile compilarlo in modo esplicito e inserire l'assembly risultante nella cartella Bin del sito Web o nella global assembly cache. In alternativa, è possibile inserire il codice sorgente nella cartella App_Code del sito, in cui verrà compilato dinamicamente in fase di esecuzione. Nell'esempio viene utilizzata la compilazione dinamica. Pertanto, si noti che il Register direttiva per il componente nella parte superiore della pagina Web contiene solo TagPrefix e Namespace gli attributi, senza un Assembly attributo. Per una procedura dettagliata viene illustrato come compilare, vedere Walkthrough: Developing and Using a Custom Web Server Control.

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);
    }

  }
}

La terza parte dell'esempio di codice è la pagina Web. Si noti che include due WebPartZone aree con il primo argomento che contiene le due funzioni WebPart controlli. È inoltre disponibile un CatalogZone zona che contiene uno standard Calendar controllo che gli utenti possono aggiungere alla pagina. Il <asp:connectionszone> elemento fornisce una connessione dell'interfaccia utente per gli utenti di creare connessioni tra i controlli. Nel Page_PreRender (metodo), si noti che viene verificato se i dati di personalizzazione sono stato modificato e, in caso affermativo, aggiorna il testo di 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>

Una volta caricata la pagina in un browser, provare a creare alcuni degli scenari elencati nella sezione Osservazioni di questo argomento che verrà modificati i dati di personalizzazione. Quando si apportano modifiche, se una modifica interessa uno degli scenari di personalizzazione registrati dal WebPartManager controllare, il testo del Label1 visualizzazione del controllo per indicare che i dati di personalizzazione sono stata modificata. Ad esempio, è possibile eseguire queste operazioni:

  • Creare una connessione tra controlli scegliendo il Connect WebPart Controls pulsante.

  • Utilizzare il modalità di visualizzazione controllo elenco a discesa per passare alla modalità di catalogo e aggiungere il calendario personale controllo al secondo WebPartZone zona.

  • Modifica nuovamente alla modalità visualizzazione del menu dei verbi (visualizzati con un simbolo della freccia sulla barra del titolo) per il calendario personale controllo e scegliere chiudere per chiuderla e aggiungerlo al catalogo della pagina.

  • Restituire la pagina sulla modalità di catalogo e aggiungere il calendario personale controllo alla pagina.

  • Utilizzare il modalità di visualizzazione controllare per passare alla modalità progettazione e modificare il layout dei controlli trascinando uno o più immagini in un'altra area o in una posizione diversa nella stessa area.

.NET Framework
Disponibile da 2.0
Torna all'inizio
Mostra: