Esta documentación está archivada y no tiene mantenimiento.

WebPartChrome (Clase)

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.

Espacio de nombres: System.Web.UI.WebControls.WebParts
Ensamblado: System.Web (en system.web.dll)

public class WebPartChrome
public class WebPartChrome
public class WebPartChrome
No aplicable.

El cromo de los elementos Web hace referencia a los elementos periféricos de la interfaz de usuario que enmarcan cada control WebPart o el control de servidor contenido en una zona WebPartZoneBase. El cromo para un control incluye su borde, su barra de título y los iconos, el texto de título y el menú de verbos que aparece dentro de la barra de título. El aspecto del cromo se establece en el nivel de la zona y se aplica a todos los controles de servidor de la zona.

El conjunto de controles de elementos Web utiliza la clave WebPartChrome para representar el cromo de los controles WebPart. Además, esta clase proporciona a los desarrolladores un medio para personalizar la representación de cualquier sección individual (como el encabezado o el pie de página) de los controles WebPart de una zona WebPartZoneBase sin tener que controlar toda la representación de dichos controles. Por ejemplo, puede reemplazar el método CreateWebPartChromeStyle para personalizar algunos atributos de estilo específicos aplicados a la zona WebPartZoneBase, pero puede confiar en la representación predeterminada para controlar el resto.

La clase WebPartChrome contiene varios métodos importantes que son útiles cuando se desea reemplazar la representación de los controles WebPart. Uno es el método CreateWebPartChromeStyle, que permite cambiar los atributos de estilo del objeto Style asociado al objeto WebPartChrome utilizado para representar un control. Otro es el constructor WebPartChrome, que se utiliza cuando se reemplaza el método CreateWebPartChrome en una clase WebPartZoneBase personalizada para crear una instancia del objeto WebPartChrome personalizado. Otro método útil es el método RenderPartContents, que puede utilizar para controlar la representación del área de contenido de los controles de una zona (frente a los elementos de cromo, como los encabezados, pies de página y barras de título). El método GetWebPartVerbs permite excluir algunos verbos de la representación si, por alguna razón, no desea que los usuarios vean dichos verbos en la interfaz de usuario. Finalmente, si desea un control completo mediante programación de todos los aspectos de la representación de los controles WebPart, puede reemplazar el método RenderWebPart.

Varias propiedades de la clase WebPartChrome son útiles también. Las propiedades Zone y WebPartManager proporcionan referencias a la zona asociada al objeto WebPartChrome y a la instancia de WebPartManager actual, respectivamente.

Notas para los herederos: Herede de la clase WebPartChrome cuando desee reemplazar la representación predeterminada de algunas secciones de los controles WebPart o los controles de servidor. Puede reemplazar opcionalmente el método CreateWebPartChromeStyle, el método GetWebPartVerbs y, especialmente, los métodos RenderPartContents o RenderWebPart para personalizar la representación. Para utilizar la clase WebPartChrome personalizada para los controles WebPart de una zona, desarrolle una zona personalizada derivada de la clase WebPartZoneBase y reemplace su método CreateWebPartChrome. Para obtener detalles sobre cómo utilizar un objeto WebPartChrome secundario en una zona, consulte la sección Ejemplo.

El ejemplo de código siguiente muestra cómo utilizar la clase WebPartChrome para reemplazar la representación predeterminada de los controles WebPart de una zona WebPartZoneBase.

El ejemplo de código tiene cuatro partes:

  • Un control de usuario que permite cambiar los modos de presentación en una página de elementos Web.

  • Una página Web que aloja todos los controles del ejemplo.

  • Una clase que contiene el código fuente para una zona WebPartZoneBase personalizada y una clase WebPartChrome.

  • Una 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 para el control de usuario procede de otro tema. Para que este ejemplo de código funcione, es necesario obtener desde el tema Tutorial: Cambiar los modos de presentación en una página de elementos Web el archivo .ascx para el control de usuario y colocarlo en la misma carpeta que la página .aspx del ejemplo.

La segunda parte del ejemplo es la página Web. Observe que hay una directiva Register cerca de la parte superior del archivo para registrar el componente compilado y un prefijo de etiqueta. Tenga también en cuenta que la página hace referencia a la zona personalizada utilizando el elemento <aspSample:MyZone> e incluye varios controles de servidor ASP.NET estándar dentro de la zona. Los controles de servidor no implementan ninguna funcionalidad real; sólo se utilizan aquí para mostrar cómo se aplican las funciones de la clase WebPartChrome a la representación de zonas. Tenga en cuenta que estos controles de servidor, aunque no son controles WebPart reales, se contienen automáticamente en tiempo de ejecución (mediante ASP.NET) en un objeto GenericWebPart, por lo que tendrán la misma funcionalidad que los controles WebPart.

<%@ 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>

La tercera parte del ejemplo de código es el código fuente para la zona WebPartZoneBase personalizada y una clase WebPartChrome. En el constructor para la clase de zona personalizada, el código comprueba la propiedad MyZone.RenderVerbsInMenu. Si el valor es true, los verbos se representan en un menú para cada uno de los controles WebPart de la zona. Éste es el comportamiento normal, predeterminado, del conjunto de controles de elementos Web. Si el valor de la propiedad MyZone.RenderVerbsInMenu es false, que es el valor predeterminado de 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 la página Web donde se declara el elemento <aspSample:MyZone>, hay un atributo RenderVerbsInMenu establecido en true, así que los verbos aparecerán en menús en los controles. Para experimentar con esta característica, puede establecer el atributo RenderVerbsInMenu declarativo en false y observar cómo los verbos se representan como vínculos.

La clase WebPartChrome personalizada reemplaza la representación en varios métodos y la zona personalizada crea una instancia de la clase MyWebPartChrome en su método CreateWebPartChrome. De esta forma, se aplica la representación personalizada a la página. Para poder ejecutar el ejemplo de código, es necesario compilar su código fuente. Se puede compilar de manera explícita y colocar el ensamblado resultante en la carpeta Bin del sitio Web o en la caché de ensamblados global. El código fuente también se puede colocar en la carpeta App_Code del sitio Web, donde se compilará dinámicamente en tiempo de ejecución. Para ver una demostración de ambos métodos de compilación, vea Tutorial: Desarrollar y utilizar un control de servidor 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);
    }

  }
}

Cuando cargue la página Web en un explorador, puede ver cómo aparecen las distintas personalizaciones estilísticas y de otro tipo realizadas en el código fuente de la clase MyWebPartChrome en los controles WebPart representados en la zona.

  • AspNetHostingPermission  para trabajar en un entorno alojado en host. Valor de petición: LinkDemand; Valor de permiso: Minimal.
  • AspNetHostingPermission  para trabajar en un entorno alojado en host. Valor de petición: InheritanceDemand; Valor de permiso: Minimal.

System.Object
  System.Web.UI.WebControls.WebParts.WebPartChrome

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0
Mostrar: