Partager via


WebPartChrome Classe

Définition

Permet aux développeurs de substituer le rendu uniquement pour les sections sélectionnées de WebPart ou les contrôles serveur dans une zone WebPartZoneBase.

public ref class WebPartChrome
public class WebPartChrome
type WebPartChrome = class
Public Class WebPartChrome
Héritage
WebPartChrome

Exemples

L’exemple de code suivant montre comment utiliser la WebPartChrome classe pour remplacer le rendu par défaut des WebPart contrôles dans une WebPartZoneBase zone.

L’exemple de code comporte quatre parties :

  • Contrôle utilisateur qui vous permet de modifier les modes d’affichage sur une page de composants WebPart.

  • Page Web qui héberge tous les contrôles de l’exemple.

  • Classe qui contient le code source d’une zone personnalisée WebPartZoneBase et d’une WebPartChrome classe.

  • Explication du fonctionnement de l’exemple.

La première partie de l’exemple de code est le contrôle utilisateur. Le code source du contrôle utilisateur provient d’une autre rubrique. Pour que cet exemple de code fonctionne, vous devez obtenir le fichier .ascx pour le contrôle utilisateur à partir de la rubrique Procédure pas à pas : modification des modes d’affichage sur une page de composants WebPart , et placer le fichier dans le même dossier que la page .aspx dans cet exemple de code.

La deuxième partie de l’exemple est la page Web. Notez qu’il existe une Register directive près du haut du fichier pour inscrire le composant compilé et un préfixe de balise. Notez également que la page référence la zone personnalisée à l’aide de l’élément <aspSample:MyZone> et inclut plusieurs contrôles serveur ASP.NET standard dans la zone. Les contrôles serveur n’implémentent aucune fonctionnalité réelle ; ils sont utilisés ici uniquement pour illustrer comment les fonctionnalités de classe WebPartChrome s’appliquent aux zones de rendu. Notez que ces contrôles serveur, bien qu’ils ne soient pas des contrôles réels WebPart , sont automatiquement encapsulés (par ASP.NET) avec un GenericWebPart objet au moment de l’exécution, de sorte qu’ils auront les mêmes fonctionnalités que WebPart les contrôles.

<%@ 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 troisième partie de l’exemple de code est la source de la zone personnalisée WebPartZoneBase et une WebPartChrome classe. Dans le constructeur de la classe de zone personnalisée, le code vérifie la MyZone.RenderVerbsInMenu propriété . Si la valeur est true, les verbes sont affichés dans un menu pour chacun des WebPart contrôles de la zone. Il s’agit du comportement normal par défaut dans l’ensemble de contrôles WebPart. Si la valeur de la MyZone.RenderVerbsInMenu propriété est false, qui est la valeur par défaut dans cette zone personnalisée, les verbes sont rendus individuellement sous forme de liens dans la barre de titre de chaque contrôle. Notez que dans le code de page Web où l’élément <aspSample:MyZone> est déclaré, il existe un RenderVerbsInMenu attribut défini truesur , de sorte que les verbes s’affichent dans les menus des contrôles. Pour tester cette fonctionnalité, vous pouvez définir l’attribut falsedéclaratif RenderVerbsInMenu sur et noter comment les verbes sont rendus sous forme de liens.

La classe personnalisée WebPartChrome remplace le rendu sur plusieurs méthodes, et la zone personnalisée crée une instance de la MyWebPartChrome classe dans sa CreateWebPartChrome méthode. Cela applique le rendu personnalisé à la page. Pour que l’exemple de code s’exécute, vous devez compiler ce code source. Vous pouvez le compiler explicitement et placer l’assembly résultant dans le dossier Bin de votre site web ou dans le Global Assembly Cache. Vous pouvez également placer le code source dans le dossier App_Code de votre site, où il sera compilé dynamiquement au moment de l’exécution. Pour obtenir une procédure pas à pas qui illustre les deux méthodes de compilation, consultez Procédure pas à pas : développement et utilisation d’un contrôle serveur Web personnalisé.

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

Lorsque vous chargez la page Web dans un navigateur, vous pouvez voir comment les différentes personnalisations stylistiques et autres personnalisations de rendu effectuées dans le code source de la MyWebPartChrome classe apparaissent sur les WebPart contrôles rendus dans la zone.

Remarques

Le chrome des composants WebPart fait référence aux éléments d’interface utilisateur périphérique qui encadrent chaque WebPart contrôle ou contrôle serveur contenu dans une WebPartZoneBase zone. Le chrome d’un contrôle inclut sa bordure, sa barre de titre et les icônes, le texte du titre et le menu verbes qui s’affichent dans la barre de titre. L’apparence du chrome est définie au niveau de la zone et s’applique à tous les contrôles serveur de la zone.

Le jeu de contrôles WebPart utilise la WebPartChrome classe pour afficher le chrome des WebPart contrôles. En outre, cette classe permet aux développeurs de personnaliser le rendu d’une section individuelle (par exemple, l’en-tête ou le pied de page) des WebPart contrôles dans une WebPartZoneBase zone sans avoir à gérer tout le rendu de ces contrôles. Par exemple, vous pouvez remplacer la CreateWebPartChromeStyle méthode pour personnaliser certains attributs de style spécifiques appliqués à la WebPartZoneBase zone, mais vous pouvez vous appuyer sur le rendu par défaut pour gérer le reste.

La WebPartChrome classe contient plusieurs méthodes importantes qui sont utiles lorsque vous souhaitez remplacer le rendu des WebPart contrôles. L’une d’elles est la CreateWebPartChromeStyle méthode, qui vous permet de modifier les attributs de style de l’objet Style associé à l’objet WebPartChrome utilisé pour afficher un contrôle. Un autre est le WebPartChrome constructeur, que vous utilisez lorsque vous remplacez la CreateWebPartChrome méthode dans une classe personnalisée WebPartZoneBase pour créer une instance de votre objet personnalisé WebPartChrome . Une autre méthode utile est la RenderPartContents méthode, que vous pouvez utiliser pour contrôler le rendu de la zone de contenu des contrôles dans une zone (par opposition aux éléments chrome tels que les en-têtes, les pieds de page et les barres de titre). La GetWebPartVerbs méthode vous permet d’exclure certains verbes du rendu, si, pour une raison quelconque, vous ne souhaitez pas que les utilisateurs voient ces verbes dans l’interface utilisateur. Enfin, si vous souhaitez un contrôle programmatique complet sur tous les aspects du rendu WebPart des contrôles, vous pouvez remplacer la RenderWebPart méthode .

Plusieurs propriétés de la WebPartChrome classe sont également utiles. Les Zone propriétés et WebPartManager fournissent des références à la zone associée à l’objet WebPartChrome et à l’instance actuelle WebPartManager , respectivement.

Notes pour les héritiers

Héritez de la WebPartChrome classe lorsque vous souhaitez remplacer le rendu par défaut de certaines sections de WebPart ou contrôles serveur. Vous pouvez éventuellement remplacer la CreateWebPartChromeStyle(WebPart, PartChromeType) méthode, la GetWebPartVerbs(WebPart) méthode et en particulier les RenderPartContents(HtmlTextWriter, WebPart) méthodes ou RenderWebPart(HtmlTextWriter, WebPart) pour personnaliser le rendu. Pour utiliser votre classe personnalisée WebPartChrome pour les WebPart contrôles d’une zone, développez une zone personnalisée dérivée de la WebPartZoneBase classe et remplacez sa CreateWebPartChrome() méthode. Pour plus d’informations sur l’utilisation d’un objet enfant WebPartChrome dans une zone, consultez la section Exemple.

Constructeurs

WebPartChrome(WebPartZoneBase, WebPartManager)

Initialise une nouvelle instance du contrôle.

Propriétés

DragDropEnabled

Obtient une valeur qui indique si vous pouvez faire glisser les contrôles à l'intérieur et à l'extérieur de la zone.

WebPartManager

Obtient une référence à l'instance de WebPartManager actuelle.

Zone

Obtient une référence à la zone WebPartZoneBase associée.

Méthodes

CreateWebPartChromeStyle(WebPart, PartChromeType)

Crée l'objet de style qui fournit des attributs de style pour chaque contrôle WebPart restitué par l'objet WebPartChrome.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
FilterWebPartVerbs(WebPartVerbCollection, WebPart)

Empêche des verbes spécifiques d'être restitués, selon des critères fournis par un développeur.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
GetWebPartChromeClientID(WebPart)

Obtient l'ID client pour l'objet WebPartChrome tel qu'il est restitué sur une page Web.

GetWebPartTitleClientID(WebPart)

Obtient l'ID client pour la cellule du tableau qui contient le titre pour un contrôle WebPart.

GetWebPartVerbs(WebPart)

Obtient une collection de verbes qui doivent être restitués avec un contrôle WebPart.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
PerformPreRender()

Exécute des tâches qui doivent être effectuées avant le rendu des contrôles WebPart.

RenderPartContents(HtmlTextWriter, WebPart)

Génère le rendu de la zone de contenu principale d'un contrôle WebPart, à l'exclusion de l'en-tête et du pied de page.

RenderWebPart(HtmlTextWriter, WebPart)

Génère le rendu d'un contrôle WebPart complet avec toutes ses sections.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à

Voir aussi