WebPartChrome Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Permite que los desarrolladores reemplacen la representación sólo de las secciones seleccionadas de los controles WebPart o los controles de servidor de una zona WebPartZoneBase.
public ref class WebPartChrome
public class WebPartChrome
type WebPartChrome = class
Public Class WebPartChrome
- Herencia
-
WebPartChrome
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar la WebPartChrome clase para invalidar la representación predeterminada de WebPart los controles en una WebPartZoneBase zona.
El ejemplo de código tiene cuatro partes:
Control de usuario que permite cambiar los modos de visualización en una página de elementos web.
Página web que hospeda todos los controles del ejemplo.
Clase que contiene el código fuente de una zona personalizada WebPartZoneBase y una WebPartChrome clase .
Explicación de cómo funciona el ejemplo.
La primera parte del ejemplo de código es el control de usuario. El código fuente del control de usuario procede de otro tema. Para que este ejemplo de código funcione, debe obtener el archivo .ascx para el control de usuario del tema Walkthrough: Changing Display Modes on a Web Parts Page y colocar el archivo en la misma carpeta que la página de .aspx en este ejemplo de código.
La segunda parte del ejemplo es la página web. Tenga en cuenta que hay una Register
directiva cerca de la parte superior del archivo para registrar el componente compilado y un prefijo de etiqueta. Tenga en cuenta también que la página hace referencia a la zona personalizada mediante el elemento <aspSample:MyZone>
e incluye varios controles estándar de servidor ASP.NET dentro de la zona. Los controles de servidor no implementan ninguna funcionalidad real; se usan aquí solo para ilustrar cómo se aplican las WebPartChrome características de clase a las zonas de representación. Tenga en cuenta que estos controles de servidor, aunque no son controles reales WebPart , se encapsulan automáticamente (por ASP.NET) con un GenericWebPart objeto en tiempo de ejecución, por lo que tendrán la misma funcionalidad que WebPart los controles.
<%@ 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 tercera parte del ejemplo de código es el origen de la zona personalizada WebPartZoneBase y una WebPartChrome clase. En el constructor de la clase de zona personalizada, el código comprueba la MyZone.RenderVerbsInMenu
propiedad . Si el valor es true
, los verbos se representan en un menú para cada uno de los WebPart controles de la zona. Este es el comportamiento normal y predeterminado en el conjunto de controles de elementos web. Si el valor de la MyZone.RenderVerbsInMenu
propiedad es false
, que es el valor predeterminado en esta zona personalizada, los verbos se representan individualmente como vínculos en la barra de título de cada control. Observe que en el código de página web donde se declara el <aspSample:MyZone>
elemento, hay un RenderVerbsInMenu
atributo establecido true
en , de modo que los verbos aparecerán en los menús de los controles. Para experimentar con esta característica, puede establecer el atributo false
declarativo RenderVerbsInMenu
en y tener en cuenta cómo se representan los verbos como vínculos.
La clase personalizada WebPartChrome invalida la representación en varios métodos y la zona personalizada crea una instancia de la MyWebPartChrome
clase en su CreateWebPartChrome método. Esto aplica la representación personalizada a la página. Para que se ejecute el ejemplo de código, debe compilar este código fuente. Puede compilarlo explícitamente y colocar el ensamblado resultante en la carpeta Bin del sitio web o en la caché global de ensamblados. Como alternativa, puede colocar el código fuente en la carpeta App_Code del sitio, donde se compilará dinámicamente en tiempo de ejecución. Para ver un tutorial que muestra ambos métodos de compilación, consulte Tutorial: Desarrollo y uso de un control de servidor web personalizado.
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
Al cargar la página web en un explorador, puede ver cómo aparecen las distintas personalizaciones de representación y de estilo realizadas en el código fuente de la MyWebPartChrome
clase en los WebPart controles representados en la zona.
Comentarios
El cromo de elementos web hace referencia a los elementos periféricos de la interfaz de usuario (UI) que enmarcan cada WebPart control o control de servidor contenido en una WebPartZoneBase zona. El cromo de un control incluye su borde, su barra de título y los iconos, texto de título y menú verbos que aparecen dentro de la barra de título. La apariencia del cromo se establece en el nivel de zona y se aplica a todos los controles de servidor de la zona.
El conjunto de controles de elementos web usa la WebPartChrome clase para representar el cromo de WebPart los controles. Además, esta clase proporciona una manera para que los desarrolladores personalicen la representación de cualquier sección individual (como el encabezado o pie de página) de los WebPart controles de una WebPartZoneBase zona sin tener que controlar toda la representación de esos controles. Por ejemplo, puede invalidar el CreateWebPartChromeStyle método para personalizar algunos atributos de estilo específicos aplicados a la WebPartZoneBase zona, pero puede confiar en la representación predeterminada para controlar el resto.
La WebPartChrome clase contiene varios métodos importantes que son útiles cuando se desea invalidar la representación de WebPart controles. Uno es el CreateWebPartChromeStyle método , que permite cambiar los atributos de estilo del Style objeto asociado al WebPartChrome objeto utilizado para representar un control. Otro es el WebPartChrome constructor, que se usa al invalidar el CreateWebPartChrome método en una clase personalizada WebPartZoneBase para crear una instancia del objeto personalizado WebPartChrome . Otro método útil es el RenderPartContents método , que se puede usar para controlar la representación del área de contenido de los controles en una zona (en lugar de elementos cromo como encabezados, pies de página y barras de título). El GetWebPartVerbs método le permite excluir determinados verbos de representarse, si por alguna razón no desea que los usuarios vean esos verbos en la interfaz de usuario. Por último, si desea completar el control mediante programación sobre todos los aspectos de la representación de los WebPart controles, puede invalidar el RenderWebPart método .
También son útiles varias propiedades de la WebPartChrome clase . Las Zone propiedades y WebPartManager proporcionan referencias a la zona asociada al WebPartChrome objeto y a la instancia actual WebPartManager , respectivamente.
Notas a los desarrolladores de herederos
Hereda de la WebPartChrome clase cuando desee invalidar la representación predeterminada de determinadas secciones de controles de WebPart servidor o . Opcionalmente, puede invalidar el CreateWebPartChromeStyle(WebPart, PartChromeType) método , el GetWebPartVerbs(WebPart) método y, especialmente los RenderPartContents(HtmlTextWriter, WebPart) métodos o RenderWebPart(HtmlTextWriter, WebPart) , para personalizar la representación. Para usar la clase personalizada WebPartChrome para los WebPart controles de una zona, desarrolle una zona personalizada derivada de la WebPartZoneBase clase e invalide su CreateWebPartChrome() método. Para obtener más información sobre cómo usar un objeto secundario WebPartChrome en una zona, vea la sección Ejemplo.
Constructores
WebPartChrome(WebPartZoneBase, WebPartManager) |
Inicializa una nueva instancia del control. |
Propiedades
DragDropEnabled |
Obtiene un valor que indica si los controles se pueden arrastrar dentro y fuera de la zona. |
WebPartManager |
Obtiene una referencia a la instancia actual de WebPartManager. |
Zone |
Obtiene una referencia a la zona WebPartZoneBase asociada. |
Métodos
CreateWebPartChromeStyle(WebPart, PartChromeType) |
Crea el objeto de estilo que proporciona los atributos de estilo a cada control WebPart procesado por el objeto WebPartChrome. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
FilterWebPartVerbs(WebPartVerbCollection, WebPart) |
Excluye los verbos concretos de la representación, en función de los criterios proporcionados por un desarrollador. |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
GetWebPartChromeClientID(WebPart) |
Obtiene el identificador de cliente del objeto WebPartChrome como se representa en una página Web. |
GetWebPartTitleClientID(WebPart) |
Obtiene el identificador de cliente para la celda de la tabla que contiene el título para un control WebPart. |
GetWebPartVerbs(WebPart) |
Obtiene una colección de verbos que se deben representar con un control WebPart. |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
PerformPreRender() |
Realiza tareas que deben llevarse a cabo antes de representar los controles WebPart. |
RenderPartContents(HtmlTextWriter, WebPart) |
Procesa el área de contenido principal de un control WebPart, excepto el encabezado y el pie de página. |
RenderWebPart(HtmlTextWriter, WebPart) |
Representa un control WebPart completo con todas sus secciones. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |