Condividi tramite


WebPartChrome Classe

Definizione

Consente agli sviluppatori di eseguire l'override del rendering solo per sezioni selezionate di controlli WebPart o controlli server in una zona WebPartZoneBase.

public ref class WebPartChrome
public class WebPartChrome
type WebPartChrome = class
Public Class WebPartChrome
Ereditarietà
WebPartChrome

Esempio

Nell'esempio di codice seguente viene illustrato come usare la classe per eseguire l'override WebPartChrome del rendering predefinito dei WebPart controlli in una WebPartZoneBase zona.

L'esempio di codice include quattro parti:

  • Controllo utente che consente di modificare le modalità di visualizzazione in una pagina web part.

  • Pagina Web che ospita tutti i controlli nell'esempio.

  • Classe contenente il codice sorgente per una zona personalizzata WebPartZoneBase e una WebPartChrome classe.

  • Spiegazione del funzionamento dell'esempio.

La prima parte dell'esempio di codice è il controllo utente. Il codice sorgente per il controllo utente proviene da un altro argomento. Per il funzionamento di questo esempio di codice, è necessario ottenere il file ascx per il controllo utente dall'argomento Procedura dettagliata: Modifica delle modalità di visualizzazione in una pagina web part e posizionare il file nella stessa cartella della pagina .aspx in questo esempio di codice.

La seconda parte dell'esempio è la pagina Web. Si noti che nella parte superiore del file è presente una Register direttiva per registrare il componente compilato e un prefisso di tag. Si noti anche che la pagina fa riferimento alla zona personalizzata usando l'elemento <aspSample:MyZone> e include diversi controlli server di ASP.NET standard all'interno della zona. I controlli server non implementano alcuna funzionalità effettiva; vengono usati qui solo per illustrare come le funzionalità della WebPartChrome classe si applicano alle zone di rendering. Si noti che questi controlli server, anche se non sono controlli effettivi WebPart , vengono automaticamente incapsulati (da ASP.NET) con un GenericWebPart oggetto in fase di esecuzione, pertanto avranno la stessa funzionalità dei WebPart controlli.

<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc1" 
  TagName="DisplayModeMenuCS"
  Src="~/DisplayModeMenuCS.ascx" %>
<%@ Register TagPrefix="aspSample" 
  Namespace="Samples.AspNet.CS.Controls" 
  Assembly="MyChromeCS" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:WebPartManager ID="WebPartManager1" runat="server" />
    <uc1:DisplayModeMenuCS id="menu1" runat="server" />
    <aspSample:MyZone ID="WebPartZone1" runat="server"
      RenderVerbsInMenu="true">
      <PartTitleStyle Font-Bold="true"
        BorderWidth="1" 
        BackColor="lightblue"/>
      <ZoneTemplate>
        <asp:Panel runat="server" id="panel1" 
          title="Vote on Issues" >
          <asp:RadioButtonList ID="RadioButtonList1" runat="server" >
            <asp:ListItem Value="1">Issue 1</asp:ListItem>
            <asp:ListItem Value="2">Issue 2</asp:ListItem>
            <asp:ListItem Value="3">Issue 3</asp:ListItem>
          </asp:RadioButtonList>
          <asp:Button ID="Button1" runat="server" Text="Cast Vote" />
        </asp:Panel>
        <asp:FileUpload ID="FileUpload1" runat="server" 
          title="Upload Files" />
      </ZoneTemplate>
    </aspSample:MyZone>
    <asp:WebPartZone ID="WebPartZone2" runat="server" />
    <asp:EditorZone ID="EditorZone1" runat="server">
      <ZoneTemplate>
        <asp:AppearanceEditorPart ID="AppearanceEditorPart1" runat="server" />
      </ZoneTemplate>
    </asp:EditorZone>
  </form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register TagPrefix="uc1" 
  TagName="DisplayModeMenuVB"
  Src="~/DisplayModeMenuVB.ascx" %>
<%@ Register TagPrefix="aspSample" 
  Namespace="Samples.AspNet.VB.Controls" 
  Assembly="MyChromeVB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:WebPartManager ID="WebPartManager1" runat="server" />
    <uc1:DisplayModeMenuVB id="menu1" runat="server" />
    <aspSample:MyZone ID="WebPartZone1" runat="server"
      RenderVerbsInMenu="true">
      <PartTitleStyle Font-Bold="true"
        BorderWidth="1" 
        BackColor="lightblue"/>
      <ZoneTemplate>
        <asp:Panel runat="server" id="panel1" 
          title="Vote on Issues" >
          <asp:RadioButtonList ID="RadioButtonList1" runat="server" >
            <asp:ListItem Value="1">Issue 1</asp:ListItem>
            <asp:ListItem Value="2">Issue 2</asp:ListItem>
            <asp:ListItem Value="3">Issue 3</asp:ListItem>
          </asp:RadioButtonList>
          <asp:Button ID="Button1" runat="server" Text="Cast Vote" />
        </asp:Panel>
        <asp:FileUpload ID="FileUpload1" runat="server" 
          title="Upload Files" />
      </ZoneTemplate>
    </aspSample:MyZone>
    <asp:WebPartZone ID="WebPartZone2" runat="server" />
    <asp:EditorZone ID="EditorZone1" runat="server">
      <ZoneTemplate>
        <asp:AppearanceEditorPart ID="AppearanceEditorPart1" runat="server" />
      </ZoneTemplate>
    </asp:EditorZone>
  </form>
</body>
</html>

La terza parte dell'esempio di codice è l'origine per la zona personalizzata WebPartZoneBase e una WebPartChrome classe. Nel costruttore per la classe di zona personalizzata il codice controlla la MyZone.RenderVerbsInMenu proprietà. Se il valore è true, i verbi vengono visualizzati in un menu per ognuno dei WebPart controlli nella zona. Si tratta del comportamento normale e predefinito nei controlli Web part impostati. Se il valore della MyZone.RenderVerbsInMenu proprietà è false, ovvero il valore predefinito in questa zona personalizzata, i verbi vengono visualizzati singolarmente come collegamenti nella barra del titolo di ogni controllo. Si noti che nel codice della pagina Web in cui viene dichiarato l'elemento <aspSample:MyZone> , è presente un RenderVerbsInMenu attributo impostato su true, in modo che i verbi vengano visualizzati nei menu nei controlli. Per sperimentare questa funzionalità, è possibile impostare l'attributo dichiarativo RenderVerbsInMenu su falsee notare il rendering dei verbi come collegamenti.

La classe personalizzata esegue l'override del rendering su diversi metodi e la zona personalizzata WebPartChrome crea un'istanza della MyWebPartChrome classe nel CreateWebPartChrome relativo metodo. Ciò applica il rendering personalizzato alla pagina. Per eseguire l'esempio di codice, è necessario compilare questo 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. Per una procedura dettagliata che illustra entrambi i metodi di compilazione, vedere Procedura dettagliata: Sviluppo e uso di un controllo server Web personalizzato.

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace Samples.AspNet.CS.Controls
{
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class MyZone : WebPartZone
  {
    private Boolean _renderVerbsInMenu;

    protected override WebPartChrome CreateWebPartChrome()
    {
      WebPartChrome theChrome = new MyWebPartChrome(this, 
        this.WebPartManager);
      if (RenderVerbsInMenu)
        this.WebPartVerbRenderMode = WebPartVerbRenderMode.Menu;
      else
        this.WebPartVerbRenderMode = WebPartVerbRenderMode.TitleBar;
      return theChrome;
    }

    public Boolean RenderVerbsInMenu
    {
      get { return _renderVerbsInMenu; }
      set { _renderVerbsInMenu = value; }
    }
  }

  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class MyWebPartChrome : WebPartChrome
  {
    WebPartZoneBase theZone;
    WebPartManager theManager;

    public MyWebPartChrome(WebPartZoneBase aZone, WebPartManager aManager) : 
      base(aZone, aManager)
    {
      theZone = aZone;
      theManager = aManager;
    }

    protected override WebPartVerbCollection GetWebPartVerbs(WebPart webPart)
    {
      ArrayList verbSet = new ArrayList();
      foreach (WebPartVerb verb in base.GetWebPartVerbs(webPart))
      {
        if (verb.Text != "Close")
          verbSet.Add(verb);
      }
      WebPartVerbCollection reducedVerbSet = 
        new WebPartVerbCollection(verbSet);
      return reducedVerbSet;
    }

    protected override Style CreateWebPartChromeStyle(WebPart part, 
      PartChromeType chromeType)
    {
      Style finalStyle = new Style();
      finalStyle.CopyFrom(base.CreateWebPartChromeStyle(part, chromeType));
      finalStyle.Font.Name = "Verdana";
      return finalStyle;
    }

    protected override void RenderPartContents(HtmlTextWriter writer, 
      WebPart part)
    {

        if (part == this.WebPartManager.SelectedWebPart)
          HttpContext.Current.Response.Write("<span>Not rendered</span>");
        else
          if(this.Zone.GetType() == typeof(MyZone))
            part.RenderControl(writer);
    }
  }
}
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Security.Permissions
Imports System.Web
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 Class MyZone
    Inherits WebPartZone
    Private _renderVerbsInMenu As Boolean

    Protected Overrides Function CreateWebPartChrome() As WebPartChrome
      Dim theChrome As WebPartChrome = _
        New MyWebPartChrome(Me, Me.WebPartManager)
      If RenderVerbsInMenu Then
        Me.WebPartVerbRenderMode = WebPartVerbRenderMode.Menu
      Else
        Me.WebPartVerbRenderMode = WebPartVerbRenderMode.TitleBar
      End If
      Return theChrome
    End Function

    Public Property RenderVerbsInMenu() As Boolean
      Get
        Return _renderVerbsInMenu
      End Get
      Set(ByVal value As Boolean)
        _renderVerbsInMenu = value
      End Set
    End Property

  End Class

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class MyWebPartChrome
    Inherits WebPartChrome
    Dim theManager As WebPartManager
    Dim theZone As WebPartZoneBase

    Public Sub New(ByVal aZone As WebPartZoneBase, _
      ByVal aManager As WebPartManager)

      MyBase.New(aZone, aManager)
      theManager = aManager
      theZone = aZone
    End Sub

    Protected Overrides Function GetWebPartVerbs _
      (ByVal webPart As WebPart) As WebPartVerbCollection

      Dim verbSet As New ArrayList()
      Dim verb As WebPartVerb
      For Each verb In MyBase.GetWebPartVerbs(webPart)
        If verb.Text <> "Close" Then
          verbSet.Add(verb)
        End If
      Next verb

      Dim reducedVerbSet As WebPartVerbCollection = _
        New WebPartVerbCollection(verbSet)

      Return reducedVerbSet
    End Function

    Protected Overrides Function CreateWebPartChromeStyle _
      (ByVal part As WebPart, ByVal chromeType As PartChromeType) As Style

      Dim finalStyle As New Style()
      finalStyle.CopyFrom(MyBase.CreateWebPartChromeStyle(Part, chromeType))
      finalStyle.Font.Name = "Verdana"
      Return finalStyle
    End Function

    Protected Overrides Sub RenderPartContents _
      (ByVal writer As HtmlTextWriter, ByVal part As WebPart)

      If part Is Me.WebPartManager.SelectedWebPart Then
        HttpContext.Current.Response.Write("<span>Not rendered</span>")
      Else
        If (Me.Zone.GetType() Is GetType(MyZone)) Then
          part.RenderControl(writer)
        End If
      End If

    End Sub

  End Class

End Namespace

Quando si carica la pagina Web in un browser, è possibile vedere come vengono visualizzate WebPart le varie personalizzazioni stilistiche e altre personalizzazioni di rendering effettuate nel codice sorgente della classe nei controlli di cui è stato eseguito il MyWebPartChrome rendering nella zona.

Commenti

Web part chrome fa riferimento agli elementi dell'interfaccia utente periferica che incorniciano ogni WebPart controllo o controllo server contenuto in una WebPartZoneBase zona. Il chrome per un controllo include il bordo, la barra del titolo e le icone, il testo del titolo e i verbi che vengono visualizzati all'interno della barra del titolo. L'aspetto del chrome è impostato a livello di zona e si applica a tutti i controlli server nella zona.

Il set di controlli Web part usa la classe per eseguire il WebPartChrome rendering del chrome per WebPart i controlli. Inoltre, questa classe consente agli sviluppatori di personalizzare il rendering di qualsiasi singola sezione (ad esempio l'intestazione o il piè di pagina) dei WebPart controlli in una WebPartZoneBase zona senza dover gestire tutto il rendering per tali controlli. Ad esempio, è possibile eseguire l'override del CreateWebPartChromeStyle metodo per personalizzare alcuni attributi di stile specifici applicati alla WebPartZoneBase zona, ma è possibile basarsi sul rendering predefinito per gestire il resto.

La WebPartChrome classe contiene diversi metodi importanti utili quando si vuole eseguire l'override del rendering dei WebPart controlli. Uno è il CreateWebPartChromeStyle metodo, che consente di modificare gli attributi di stile dell'oggetto associato all'oggetto Style usato per eseguire il WebPartChrome rendering di un controllo. Un altro è il costruttore che si usa quando si esegue l'override del WebPartChromeCreateWebPartChrome metodo in una classe personalizzata WebPartZoneBase per creare un'istanza dell'oggetto personalizzato WebPartChrome . Un altro metodo utile è il RenderPartContents metodo che è possibile usare per controllare il rendering dell'area del contenuto dei controlli in una zona (anziché elementi chrome, ad esempio intestazioni, piè di pagina e barre del titolo). Il GetWebPartVerbs metodo consente di escludere determinati verbi dal rendering, se per qualche motivo non si vuole che gli utenti visualizzino tali verbi nell'interfaccia utente. Infine, se si vuole completare il controllo programmatico su tutti gli aspetti del rendering dei WebPart controlli, è possibile eseguire l'override del RenderWebPart metodo.

Sono utili anche diverse proprietà della WebPartChrome classe. Le Zone proprietà e WebPartManager forniscono rispettivamente riferimenti alla zona associata all'oggetto e all'istanza WebPartChrome corrente WebPartManager .

Note per gli eredi

Ereditare dalla classe quando si vuole eseguire l'override del WebPartChrome rendering predefinito di determinate sezioni di WebPart o controlli server. Facoltativamente, è possibile eseguire l'override del CreateWebPartChromeStyle(WebPart, PartChromeType) metodo, del GetWebPartVerbs(WebPart) metodo e, in particolare, dei RenderPartContents(HtmlTextWriter, WebPart) metodi o RenderWebPart(HtmlTextWriter, WebPart) per personalizzare il rendering. Per usare la classe personalizzata per i WebPart controlli in una zona, sviluppare una zona personalizzata WebPartChrome derivata dalla classe e eseguire l'override CreateWebPartChrome() del WebPartZoneBase relativo metodo. Per informazioni dettagliate su come usare un oggetto figlio WebPartChrome in una zona, vedere la sezione Esempio.

Costruttori

WebPartChrome(WebPartZoneBase, WebPartManager)

Inizializza una nuova istanza del controllo.

Proprietà

DragDropEnabled

Ottiene un valore che indica se i controlli possono essere trascinati all'interno e all'esterno della zona.

WebPartManager

Ottiene un riferimento all'istanza WebPartManager corrente.

Zone

Ottiene un riferimento alla zona WebPartZoneBase associata.

Metodi

CreateWebPartChromeStyle(WebPart, PartChromeType)

Crea l'oggetto stile che fornisce gli attributi di stile per ciascun controllo WebPart di cui è stato eseguito il rendering tramite l'oggetto WebPartChrome.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
FilterWebPartVerbs(WebPartVerbCollection, WebPart)

Esclude verbi specifici dal rendering, sulla base di criteri forniti da uno sviluppatore.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
GetWebPartChromeClientID(WebPart)

Ottiene l'ID client dell'oggetto WebPartChrome di cui è stato eseguito il rendering in una pagina Web.

GetWebPartTitleClientID(WebPart)

Ottiene l'ID client della cella della tabella che contiene il titolo di un controllo WebPart.

GetWebPartVerbs(WebPart)

Ottiene un insieme di verbi di cui è necessario eseguire il rendering con un controllo WebPart.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
PerformPreRender()

Esegue operazioni che devono essere effettuate prima del rendering dei controlli WebPart.

RenderPartContents(HtmlTextWriter, WebPart)

Esegue il rendering dell'area di contenuto principale di un controllo WebPart, ad eccezione dell'intestazione e del piè di pagina.

RenderWebPart(HtmlTextWriter, WebPart)

Esegue il rendering di un controllo WebPart completo con tutte le relative sezioni.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Vedi anche