WebPartChrome Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Gör det möjligt för utvecklare att åsidosätta återgivningen endast för de valda avsnitten av WebPart eller serverkontrollerna i en WebPartZoneBase zon.
public ref class WebPartChrome
public class WebPartChrome
type WebPartChrome = class
Public Class WebPartChrome
- Arv
-
WebPartChrome
Exempel
Följande kodexempel visar hur du använder WebPartChrome klassen för att åsidosätta standardåtergivningen av WebPart kontroller i en WebPartZoneBase zon.
Kodexemplet har fyra delar:
En användarkontroll som gör att du kan ändra visningslägen på en webbdelssida.
En webbsida som är värd för alla kontroller i exemplet.
En klass som innehåller källkoden för en anpassad WebPartZoneBase zon och en WebPartChrome klass.
En förklaring av hur exemplet fungerar.
Den första delen av kodexemplet är användarkontrollen. Källkoden för användarkontrollen kommer från ett annat ämne. För att det här kodexemplet ska fungera måste du hämta .ascx-filen för användarkontrollen från avsnittet Genomgång: Ändra visningslägen på en webbdelssida och placera filen i samma mapp som sidan .aspx i det här kodexemplet.
Den andra delen av exemplet är webbsidan. Observera att det finns ett Register direktiv längst upp i filen för att registrera den kompilerade komponenten och ett taggprefix. Observera också att sidan refererar till den anpassade zonen med elementet <aspSample:MyZone> och innehåller flera standardkontroller ASP.NET server i zonen. Serverkontrollerna implementerar inte några faktiska funktioner. de används bara här för att illustrera hur WebPartChrome klassfunktionerna gäller för renderingszoner. Observera att dessa serverkontroller, även om de inte är faktiska WebPart kontroller, automatiskt omsluts (av ASP.NET) med ett GenericWebPart-objekt vid körning, så att de har samma funktioner som WebPart kontroller.
<%@ 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>
Den tredje delen av kodexemplet är källan för den anpassade WebPartZoneBase zonen och en WebPartChrome klass. I konstruktorn för den anpassade zonklassen kontrollerar MyZone.RenderVerbsInMenu koden egenskapen. Om värdet är truerenderas verb i en meny för var och en av WebPart kontrollerna i zonen. Det här är det normala standardbeteendet i uppsättningen med webbdelar-kontroller. Om egenskapsvärdet MyZone.RenderVerbsInMenu är false, vilket är standardvärdet i den här anpassade zonen, återges verben individuellt som länkar i namnlisten för varje kontroll. Observera att i webbsidekoden där elementet <aspSample:MyZone> deklareras finns ett RenderVerbsInMenu attribut inställt på true, så att verben visas i menyerna i kontrollerna. Om du vill experimentera med den här funktionen kan du ange det deklarativa attributet RenderVerbsInMenu till falseoch notera hur verben återges som länkar.
Den anpassade WebPartChrome klassen åsidosätter återgivningen på flera metoder och den anpassade zonen skapar en instans av MyWebPartChrome klassen i sin CreateWebPartChrome metod. Detta tillämpar den anpassade återgivningen på sidan. För att kodexemplet ska köras måste du kompilera den här källkoden. Du kan kompilera den explicit och placera den resulterande sammansättningen i webbplatsens bin-mapp eller den globala sammansättningscacheminnet. Du kan också placera källkoden i webbplatsens App_Code mapp, där den kompileras dynamiskt vid körning. En genomgång som visar båda kompileringsmetoderna finns i Genomgång: Utveckla och använda en anpassad webbserverkontroll.
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
När du läser in webbsidan i en webbläsare kan du se hur de olika stilistiska och andra renderingsanpassningar som gjorts i klassens MyWebPartChrome källkod visas på kontrollerna WebPart som återges i zonen.
Kommentarer
Chrome för webbdelar refererar till elementen för det kringutrustningsanvändargränssnitt (UI) som ramar in varje WebPart kontroll eller serverkontroll som finns i en WebPartZoneBase zon. Chrome för en kontroll innehåller dess kantlinje, dess namnlist och ikonerna, rubriktexten och verbmenyn som visas i namnlisten. Utseendet på kromet anges på zonnivå och gäller för alla serverkontroller i zonen.
Kontrolluppsättningen WebPartChrome Webbdelar använder klassen för att återge chrome för WebPart kontroller. Dessutom ger den här klassen ett sätt för utvecklare att anpassa återgivningen av enskilda avsnitt (till exempel sidhuvud eller sidfot) för WebPart kontrollerna i en WebPartZoneBase zon utan att behöva hantera all återgivning för dessa kontroller. Du kan till exempel åsidosätta CreateWebPartChromeStyle metoden för att anpassa vissa specifika formatattribut som tillämpas WebPartZoneBase på zonen, men du kan förlita dig på standardåtergivningen för att hantera resten.
Klassen WebPartChrome innehåller flera viktiga metoder som är användbara när du vill åsidosätta återgivningen av WebPart kontroller. Den ena är metoden CreateWebPartChromeStyle som gör att du kan ändra formatattributen Style för objektet som är associerat med objektet WebPartChrome som används för att återge en kontroll. En annan är WebPartChrome konstruktorn som du använder när du åsidosätter CreateWebPartChrome metoden i en anpassad WebPartZoneBase klass för att skapa en instans av ditt anpassade WebPartChrome objekt. En annan användbar metod är metoden RenderPartContents som du kan använda för att styra återgivningen av innehållsområdet för kontroller i en zon (till skillnad från kromelement som sidhuvuden, sidfötter och namnlister). Med GetWebPartVerbs metoden kan du undanta vissa verb från att renderas, om du av någon anledning inte vill att användarna ska se dessa verb i användargränssnittet. Slutligen kan du åsidosätta metoden om du vill ha fullständig programmatisk kontroll över alla aspekter av återgivningen WebPart av RenderWebPart kontrollerna.
Flera egenskaper för WebPartChrome klassen är också användbara. Egenskaperna Zone och WebPartManager innehåller referenser till zonen som är associerad med WebPartChrome objektet respektive den aktuella WebPartManager instansen.
Anteckningar till arvingar
Ärv från WebPartChrome klassen när du vill åsidosätta standardåtergivningen av vissa delar av WebPart eller serverkontroller. Du kan också åsidosätta CreateWebPartChromeStyle(WebPart, PartChromeType) metoden, GetWebPartVerbs(WebPart) metoden och särskilt RenderPartContents(HtmlTextWriter, WebPart) metoderna eller RenderWebPart(HtmlTextWriter, WebPart) för att anpassa återgivningen. Om du vill använda din anpassade WebPartChrome klass för WebPart kontrollerna i en zon utvecklar du en anpassad zon som härleds från WebPartZoneBase klassen och åsidosätter dess CreateWebPartChrome() metod. Mer information om hur du använder ett underordnat WebPartChrome objekt i en zon finns i avsnittet Exempel.
Konstruktorer
| Name | Description |
|---|---|
| WebPartChrome(WebPartZoneBase, WebPartManager) |
Initierar en ny instans av kontrollen. |
Egenskaper
| Name | Description |
|---|---|
| DragDropEnabled |
Hämtar ett värde som anger om kontroller kan dras till och ut ur zonen. |
| WebPartManager |
Hämtar en referens till den aktuella WebPartManager instansen. |
| Zone |
Hämtar en referens till den associerade WebPartZoneBase zonen. |
Metoder
| Name | Description |
|---|---|
| CreateWebPartChromeStyle(WebPart, PartChromeType) |
Skapar formatobjektet som tillhandahåller formatattribut för varje WebPart kontroll som återges av WebPartChrome objektet. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| FilterWebPartVerbs(WebPartVerbCollection, WebPart) |
Exkluderar specifika verb från att återges, baserat på kriterier som tillhandahålls av en utvecklare. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| GetWebPartChromeClientID(WebPart) |
Hämtar klient-ID:t för WebPartChrome objektet som återges på en webbsida. |
| GetWebPartTitleClientID(WebPart) |
Hämtar klient-ID:t för tabellcellen som innehåller rubriken för en WebPart kontroll. |
| GetWebPartVerbs(WebPart) |
Hämtar en samling verb som ska renderas med en WebPart kontroll. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| PerformPreRender() |
Utför uppgifter som måste utföras innan återgivningskontroller WebPart . |
| RenderPartContents(HtmlTextWriter, WebPart) |
Renderar huvudinnehållsområdet i en WebPart kontroll, exklusive sidhuvud och sidfot. |
| RenderWebPart(HtmlTextWriter, WebPart) |
Renderar en fullständig WebPart kontroll med alla dess avsnitt. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |