WebPartChrome Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 false
e 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) |