WebPartChrome Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Umožňuje vývojářům přepsat vykreslování pouze pro vybrané části ovládacích WebPart prvků serveru nebo ovládacích prvků v WebPartZoneBase zóně.
public ref class WebPartChrome
public class WebPartChrome
type WebPartChrome = class
Public Class WebPartChrome
- Dědičnost
-
WebPartChrome
Příklady
Následující příklad kódu ukazuje, jak pomocí WebPartChrome třídy přepsat výchozí vykreslování ovládacích WebPart prvků v WebPartZoneBase zóně.
Příklad kódu má čtyři části:
Uživatelský ovládací prvek, který umožňuje změnit režimy zobrazení na stránce webových částí.
Webová stránka, která je hostitelem všech ovládacích prvků v příkladu.
Třída, která obsahuje zdrojový kód pro vlastní WebPartZoneBase zónu WebPartChrome a třídu.
Vysvětlení fungování příkladu
První částí příkladu kódu je uživatelský ovládací prvek. Zdrojový kód uživatelského ovládacího prvku pochází z jiného tématu. Aby tento příklad kódu fungoval, musíte získat soubor .ascx pro uživatelský ovládací prvek z návodu: Změna režimů zobrazení v tématu stránky webových částí a umístit soubor do stejné složky jako .aspx stránka v tomto příkladu kódu.
Druhou částí příkladu je webová stránka. Všimněte si, že v horní části souboru je Register direktiva pro registraci zkompilované komponenty a předpony značky. Všimněte si také, že stránka odkazuje na vlastní zónu pomocí elementu <aspSample:MyZone> a obsahuje několik standardních ovládacích prvků serveru ASP.NET v rámci zóny. Ovládací prvky serveru neimplementují žádné skutečné funkce; Používají se pouze k ilustraci toho, jak WebPartChrome se funkce třídy vztahují na zóny vykreslování. Všimněte si, že tyto ovládací prvky serveru, i když nejsou skutečnými ovládacími prvky WebPart, jsou všechny automaticky zabalené (ASP.NET) s objektem GenericWebPart za běhu, takže budou mít stejné funkce jako WebPart ovládací prvky.
<%@ 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>
Třetí část příkladu kódu je zdrojem pro vlastní WebPartZoneBase zónu WebPartChrome a třídu. V konstruktoru pro vlastní třídu zóny kód zkontroluje MyZone.RenderVerbsInMenu vlastnost. Pokud je truehodnota , příkazy se vykreslují v nabídce pro každý ovládací WebPart prvky v zóně. Toto je normální výchozí chování v sadě ovládacích prvků webových částí.
MyZone.RenderVerbsInMenu Pokud je falsehodnota vlastnosti , což je výchozí hodnota v této vlastní zóně, příkazy se vykreslují jednotlivě jako odkazy v záhlaví každého ovládacího prvku. Všimněte si, že v kódu webové stránky, kde <aspSample:MyZone> je prvek deklarován, existuje RenderVerbsInMenu atribut nastavený na true, takže příkazy se zobrazí v nabídkách ovládacích prvků. Chcete-li experimentovat s touto funkcí, můžete nastavit deklarativní RenderVerbsInMenu atribut na falsea všimněte si, jak se příkazy vykreslují jako odkazy.
Vlastní WebPartChrome třída přepíše vykreslování u několika metod a vlastní zóna vytvoří instanci MyWebPartChrome třídy ve své CreateWebPartChrome metodě. Tím se vlastní vykreslování použije na stránku. Pro spuštění příkladu kódu je nutné zkompilovat tento zdrojový kód. Můžete jej explicitně zkompilovat a výsledné sestavení umístit do složky Bin vašeho webu nebo globální mezipaměti sestavení. Případně můžete zdrojový kód umístit do složky App_Code webu, kde se bude dynamicky kompilovat za běhu. Návod, který ukazuje obě metody kompilace, naleznete v části Návod: Vývoj a použití vlastního ovládacího prvku webového serveru.
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
Při načítání webové stránky v prohlížeči můžete vidět, jak se různé stylistické a další úpravy vykreslování provedené ve zdrojovém kódu MyWebPartChrome třídy zobrazují na WebPart ovládacích prvcích vykreslených v zóně.
Poznámky
Webové části chrome odkazuje na prvky periferního uživatelského rozhraní(UI), které rámují každý WebPart ovládací prvek nebo serverový ovládací prvek obsažený v WebPartZoneBase zóně. Chrome ovládacího prvku obsahuje jeho ohraničení, jeho záhlaví a ikony, text nadpisu a nabídku sloves, která se zobrazí v záhlaví. Vzhled chromu je nastaven na úrovni zóny a vztahuje se na všechny ovládací prvky serveru v zóně.
Sada ovládacích WebPartChrome částí používá třídu k vykreslení chromu pro WebPart ovládací prvky. Kromě toho tato třída poskytuje vývojářům způsob, jak přizpůsobit vykreslování libovolného jednotlivého oddílu (například záhlaví nebo zápatí) ovládacích WebPart prvků v WebPartZoneBase zóně, aniž by museli zpracovávat veškeré vykreslování těchto ovládacích prvků. Můžete například přepsat metodu CreateWebPartChromeStyle tak, aby přizpůsobila některé konkrétní atributy stylu použité v WebPartZoneBase zóně, ale můžete spoléhat na výchozí vykreslování pro zpracování zbytku.
Třída WebPartChrome obsahuje několik důležitých metod, které jsou užitečné, když chcete přepsat vykreslování ovládacích WebPart prvků. Jednou je CreateWebPartChromeStyle metoda, která umožňuje změnit atributy Style stylu objektu přidruženého k objektu WebPartChrome použitému k vykreslení ovládacího prvku. Další je WebPartChrome konstruktor, který použijete při přepsání CreateWebPartChrome metody ve vlastní WebPartZoneBase třídě k vytvoření instance vlastního WebPartChrome objektu. Další užitečnou metodou RenderPartContents je metoda, kterou můžete použít k řízení vykreslování oblasti obsahu ovládacích prvků v zóně (na rozdíl od prvků chromu, jako jsou záhlaví, zápatí a záhlaví). Tato GetWebPartVerbs metoda umožňuje vyloučit určité příkazy z vykreslení, pokud z nějakého důvodu nechcete, aby uživatelé tyto příkazy viděli v uživatelském rozhraní. A konečně, pokud chcete dokončit programovou kontrolu nad všemi aspekty vykreslování WebPart ovládacích prvků, můžete přepsat metodu RenderWebPart .
Je také užitečné několik vlastností WebPartChrome třídy. Zone Vlastnosti WebPartManager poskytují odkazy na zónu přidruženou k objektu WebPartChrome a aktuální WebPartManager instanci.
Poznámky pro dědice
Dědí z WebPartChrome třídy, pokud chcete přepsat výchozí vykreslování určitých částí nebo serverových WebPart ovládacích prvků. Volitelně můžete přepsat metodu CreateWebPartChromeStyle(WebPart, PartChromeType) , metodu GetWebPartVerbs(WebPart) , zejména RenderPartContents(HtmlTextWriter, WebPart) metody nebo RenderWebPart(HtmlTextWriter, WebPart) metody, a přizpůsobit vykreslování. Chcete-li použít vlastní WebPartChrome třídu pro WebPart ovládací prvky v zóně, vytvořte vlastní zónu odvozenou z třídy a přepište její WebPartZoneBase metoduCreateWebPartChrome(). Podrobnosti o použití podřízeného WebPartChrome objektu v zóně najdete v části Příklad.
Konstruktory
| Name | Description |
|---|---|
| WebPartChrome(WebPartZoneBase, WebPartManager) |
Inicializuje novou instanci ovládacího prvku. |
Vlastnosti
| Name | Description |
|---|---|
| DragDropEnabled |
Získá hodnotu, která označuje, zda lze ovládací prvky přetáhnout do a z zóny. |
| WebPartManager |
Získá odkaz na aktuální WebPartManager instanci. |
| Zone |
Získá odkaz na přidruženou WebPartZoneBase zónu. |
Metody
| Name | Description |
|---|---|
| CreateWebPartChromeStyle(WebPart, PartChromeType) |
Vytvoří objekt stylu, který poskytuje atributy stylu pro každý WebPart ovládací prvek vykreslený objektem WebPartChrome . |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| FilterWebPartVerbs(WebPartVerbCollection, WebPart) |
Vyloučí konkrétní příkazy z vykreslení na základě kritérií poskytovaných vývojářem. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| GetWebPartChromeClientID(WebPart) |
Získá ID klienta objektu WebPartChrome vykreslené na webové stránce. |
| GetWebPartTitleClientID(WebPart) |
Získá ID klienta pro buňku tabulky, která obsahuje název WebPart ovládacího prvku. |
| GetWebPartVerbs(WebPart) |
Získá kolekci sloves, které by se měly vykreslit pomocí WebPart ovládacího prvku. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| PerformPreRender() |
Provádí úlohy, které je nutné provést před vykreslováním WebPart ovládacích prvků. |
| RenderPartContents(HtmlTextWriter, WebPart) |
Vykreslí oblast hlavního WebPart obsahu ovládacího prvku s výjimkou záhlaví a zápatí. |
| RenderWebPart(HtmlTextWriter, WebPart) |
Vykreslí úplný WebPart ovládací prvek se všemi jeho oddíly. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |