Compartir a través de


WebPartChrome Clase

Definición

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 trueen , de modo que los verbos aparecerán en los menús de los controles. Para experimentar con esta característica, puede establecer el atributo falsedeclarativo 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)

Se aplica a

Consulte también