WebPartChrome Klas

Definitie

Hiermee kunnen ontwikkelaars de rendering alleen overschrijven voor de geselecteerde secties van WebPart of serverbesturingselementen in een WebPartZoneBase zone.

public ref class WebPartChrome
public class WebPartChrome
type WebPartChrome = class
Public Class WebPartChrome
Overname
WebPartChrome

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u de WebPartChrome klasse gebruikt om de standaardweergave van WebPart besturingselementen in een WebPartZoneBase zone te overschrijven.

Het codevoorbeeld heeft vier delen:

  • Een gebruikersbeheer waarmee u weergavemodi op een pagina met webonderdelen kunt wijzigen.

  • Een webpagina waarop alle besturingselementen in het voorbeeld worden gehost.

  • Een klasse die de broncode voor een aangepaste WebPartZoneBase zone en een WebPartChrome klasse bevat.

  • Een uitleg van hoe het voorbeeld werkt.

Het eerste deel van het codevoorbeeld is het gebruikersbeheer. De broncode voor het gebruikersbeheer komt uit een ander onderwerp. Om dit codevoorbeeld te laten werken, moet u het ASCX-bestand voor het gebruikersbeheer ophalen uit het scenario: Weergavemodi wijzigen op een paginaonderwerp met webonderdelen en het bestand in dezelfde map plaatsen als de .aspx pagina in dit codevoorbeeld.

Het tweede deel van het voorbeeld is de webpagina. Houd er rekening mee dat er boven aan het bestand een Register instructie is voor het registreren van het gecompileerde onderdeel en een tagvoorvoegsel. Houd er ook rekening mee dat de pagina verwijst naar de aangepaste zone met behulp van het element <aspSample:MyZone> en verschillende standaardbesturingselementen voor ASP.NET server in de zone bevat. De serverbesturingselementen implementeren geen werkelijke functionaliteit; ze worden hier alleen gebruikt om te illustreren hoe de WebPartChrome klassefuncties van toepassing zijn op renderingzones. Houd er rekening mee dat deze serverbesturingselementen, hoewel ze niet werkelijk zijn WebPart besturingselementen, automatisch worden verpakt (door ASP.NET) met een GenericWebPart-object tijdens runtime, zodat ze dezelfde functionaliteit hebben als WebPart besturingselementen.

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

Het derde deel van het codevoorbeeld is de bron voor de aangepaste WebPartZoneBase zone en een WebPartChrome klasse. In de constructor voor de aangepaste zoneklasse controleert de code de MyZone.RenderVerbsInMenu eigenschap. Als de waarde is true, worden werkwoorden weergegeven in een menu voor elk van de WebPart besturingselementen in de zone. Dit is het normale, standaardgedrag in de besturingselementenset webonderdelen. Als de MyZone.RenderVerbsInMenu eigenschapswaarde falseis, wat de standaardwaarde is in deze aangepaste zone, worden de werkwoorden afzonderlijk weergegeven als koppelingen in de titelbalk van elk besturingselement. U ziet dat er in de webpaginacode waar het <aspSample:MyZone> element wordt gedeclareerd, een RenderVerbsInMenu kenmerk is ingesteld op true, zodat de werkwoorden worden weergegeven in menu's op de besturingselementen. Als u wilt experimenteren met deze functie, kunt u het declaratieve RenderVerbsInMenu kenmerk falseinstellen op en noteren hoe de werkwoorden worden weergegeven als koppelingen.

De aangepaste WebPartChrome klasse overschrijft de rendering op verschillende methoden en de aangepaste zone maakt een exemplaar van de klasse in CreateWebPartChrome de MyWebPartChrome methode. Hiermee wordt de aangepaste rendering toegepast op de pagina. Als u het codevoorbeeld wilt uitvoeren, moet u deze broncode compileren. U kunt deze expliciet compileren en de resulterende assembly in de map Bin van uw website of de globale assemblycache plaatsen. U kunt de broncode ook in de map App_Code van uw site plaatsen, waar deze dynamisch wordt gecompileerd tijdens runtime. Zie Walkthrough: Een aangepast webserverbeheer ontwikkelen en gebruiken voor een overzicht van beide methoden voor het compileren.

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

Wanneer u de webpagina in een browser laadt, kunt u zien hoe de verschillende stijl- en andere renderingaanpassingen die zijn aangebracht in de broncode van de MyWebPartChrome klasse worden weergegeven op de WebPart besturingselementen die in de zone worden weergegeven.

Opmerkingen

Webonderdelen chrome verwijst naar de elementen van de randapparaatgebruikersinterface (UI) die elk WebPart besturingselement of serverbeheer in een WebPartZoneBase zone omkaderen. Het chroom voor een besturingselement bevat de rand, de titelbalk en de pictogrammen, titeltekst en het menu werkwoorden die in de titelbalk worden weergegeven. Het uiterlijk van de chrome is ingesteld op zoneniveau en is van toepassing op alle serverbesturingselementen in de zone.

De besturingsset webonderdelen gebruikt de WebPartChrome klasse om de chrome voor WebPart besturingselementen weer te geven. Daarnaast biedt deze klasse ontwikkelaars een manier om de weergave van afzonderlijke secties (zoals de kop- of voettekst) van de WebPart besturingselementen in een WebPartZoneBase zone aan te passen zonder dat alle rendering voor deze besturingselementen hoeft te worden verwerkt. U kunt bijvoorbeeld de CreateWebPartChromeStyle methode overschrijven om bepaalde specifieke stijlkenmerken aan te passen die zijn toegepast op de WebPartZoneBase zone, maar u kunt vertrouwen op de standaardweergave om de rest te verwerken.

De WebPartChrome klasse bevat verschillende belangrijke methoden die handig zijn als u het weergeven van WebPart besturingselementen wilt overschrijven. Een is de CreateWebPartChromeStyle methode waarmee u de stijlkenmerken van het object kunt wijzigen dat is gekoppeld aan het StyleWebPartChrome object dat wordt gebruikt om een besturingselement weer te geven. Een andere is de WebPartChrome constructor die u gebruikt wanneer u de CreateWebPartChrome methode in een aangepaste WebPartZoneBase klasse overschrijft om een exemplaar van uw aangepaste WebPartChrome object te maken. Een andere handige methode is de RenderPartContents methode die u kunt gebruiken om het weergeven van het inhoudsgebied van besturingselementen in een zone te beheren (in tegenstelling tot chrome-elementen zoals kopteksten, voetteksten en titelbalken). Met de GetWebPartVerbs methode kunt u bepaalde werkwoorden uitsluiten van weergave, als u om een of andere reden niet wilt dat gebruikers deze werkwoorden in de gebruikersinterface zien. Ten slotte kunt u de methode overschrijven als u volledige programmatische controle wilt over alle aspecten van het weergeven van de WebPartRenderWebPart besturingselementen.

Verschillende eigenschappen van de WebPartChrome klasse zijn ook nuttig. De Zone en WebPartManager eigenschappen bieden verwijzingen naar de zone die is gekoppeld aan het WebPartChrome object en het huidige WebPartManager exemplaar.

Notities voor overnemers

Overnemen van de WebPartChrome klasse wanneer u de standaardweergave van bepaalde secties of WebPart serverbesturingselementen wilt overschrijven. U kunt desgewenst de CreateWebPartChromeStyle(WebPart, PartChromeType) methode, de GetWebPartVerbs(WebPart) methode en met name de RenderPartContents(HtmlTextWriter, WebPart) of RenderWebPart(HtmlTextWriter, WebPart) methoden overschrijven om de rendering aan te passen. Als u uw aangepaste WebPartChrome klasse wilt gebruiken voor de WebPart besturingselementen in een zone, ontwikkelt u een aangepaste zone die is afgeleid van de klasse en overschrijft u de WebPartZoneBaseCreateWebPartChrome() bijbehorende methode. Zie de sectie Voorbeeld voor meer informatie over het gebruik van een onderliggend WebPartChrome object in een zone.

Constructors

Name Description
WebPartChrome(WebPartZoneBase, WebPartManager)

Initialiseert een nieuw exemplaar van het besturingselement.

Eigenschappen

Name Description
DragDropEnabled

Hiermee wordt een waarde opgehaald die aangeeft of besturingselementen naar en uit de zone kunnen worden gesleept.

WebPartManager

Hiermee wordt een verwijzing naar het huidige WebPartManager exemplaar opgehaald.

Zone

Hiermee wordt een verwijzing naar de gekoppelde WebPartZoneBase zone opgehaald.

Methoden

Name Description
CreateWebPartChromeStyle(WebPart, PartChromeType)

Hiermee maakt u het stijlobject dat stijlkenmerken levert voor elk WebPart besturingselement dat door het WebPartChrome object wordt weergegeven.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
FilterWebPartVerbs(WebPartVerbCollection, WebPart)

Hiermee worden specifieke werkwoorden uitgesloten van weergave, op basis van criteria van een ontwikkelaar.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
GetWebPartChromeClientID(WebPart)

Hiermee haalt u de client-id voor het WebPartChrome object op zoals weergegeven op een webpagina.

GetWebPartTitleClientID(WebPart)

Hiermee haalt u de client-id op voor de tabelcel die de titel voor een WebPart besturingselement bevat.

GetWebPartVerbs(WebPart)

Hiermee haalt u een verzameling werkwoorden op die moeten worden weergegeven met een WebPart besturingselement.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
PerformPreRender()

Voert taken uit die moeten worden uitgevoerd voordat u besturingselementen weer geeft WebPart .

RenderPartContents(HtmlTextWriter, WebPart)

Hiermee wordt het hoofdinhoudsgebied van een WebPart besturingselement weergegeven, met uitzondering van de kop- en voettekst.

RenderWebPart(HtmlTextWriter, WebPart)

Geeft een volledig WebPart besturingselement weer met alle bijbehorende secties.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op

Zie ook