Udostępnij za pośrednictwem


WebPartChrome Klasa

Definicja

Umożliwia deweloperom zastępowanie renderowania tylko dla wybranych sekcji WebPart kontrolek serwera lub w WebPartZoneBase strefie.

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

Przykłady

W poniższym przykładzie kodu pokazano, jak użyć WebPartChrome klasy do zastąpienia domyślnego WebPart renderowania kontrolek w WebPartZoneBase strefie.

Przykładowy kod ma cztery części:

  • Kontrolka użytkownika, która umożliwia zmianę trybów wyświetlania na stronie składników Web Part.

  • Strona sieci Web, która hostuje wszystkie kontrolki w przykładzie.

  • Klasa zawierająca kod źródłowy strefy niestandardowej WebPartZoneBaseWebPartChrome i klasy.

  • Wyjaśnienie działania przykładu.

Pierwszą częścią przykładu kodu jest kontrolka użytkownika. Kod źródłowy kontrolki użytkownika pochodzi z innego tematu. Aby ten przykład kodu działał, należy uzyskać plik ascx dla kontrolki użytkownika z przewodnika: zmienianie trybów wyświetlania w temacie Strona składników Web Part i umieścić plik w tym samym folderze co strona .aspx w tym przykładzie kodu.

Drugą częścią przykładu jest strona sieci Web. Należy pamiętać, że w górnej części pliku znajduje Register się dyrektywa umożliwiająca zarejestrowanie skompilowanego składnika i prefiksu tagu. Należy również zauważyć, że strona odwołuje się do strefy niestandardowej przy użyciu elementu <aspSample:MyZone> i zawiera kilka standardowych kontrolek serwera ASP.NET w strefie. Kontrolki serwera nie implementują żadnych rzeczywistych funkcji; Są one używane tutaj tylko do zilustrowania sposobu, w WebPartChrome jaki funkcje klasy mają zastosowanie do stref renderowania. Należy pamiętać, że te kontrolki serwera, choć nie są rzeczywistymi WebPart kontrolkami, są automatycznie opakowane (przez ASP.NET) z obiektem GenericWebPart w czasie wykonywania, więc będą miały taką samą funkcjonalność jak WebPart kontrolki.

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

Trzecią częścią przykładu kodu jest źródło strefy niestandardowej WebPartZoneBaseWebPartChrome i klasy. W konstruktorze dla klasy strefy niestandardowej kod sprawdza MyZone.RenderVerbsInMenu właściwość . Jeśli wartość to true, czasowniki są renderowane w menu dla każdej kontrolki WebPart w strefie. Jest to normalne, domyślne zachowanie w zestawie kontrolek składników Web Part. MyZone.RenderVerbsInMenu Jeśli wartość właściwości to false, która jest wartością domyślną w tej strefie niestandardowej, czasowniki są renderowane indywidualnie jako linki na pasku tytułu każdej kontrolki. Zwróć uwagę, że w kodzie strony sieci Web, w którym <aspSample:MyZone> element jest zadeklarowany, istnieje RenderVerbsInMenu atrybut ustawiony na truewartość , dzięki czemu czasowniki będą wyświetlane w menu w kontrolkach. Aby poeksperymentować z tą funkcją, możesz ustawić atrybut deklaratywny RenderVerbsInMenu na false, i zanotować sposób renderowania czasowników jako linków.

Klasa niestandardowa WebPartChrome zastępuje renderowanie na kilku metodach, a strefa niestandardowa tworzy wystąpienie MyWebPartChrome klasy w jej CreateWebPartChrome metodzie. Dotyczy to renderowania niestandardowego na stronie. Aby można było uruchomić przykładowy kod, należy skompilować ten kod źródłowy. Można je skompilować jawnie i umieścić wynikowy zestaw w folderze Bin witryny sieci Web lub globalnej pamięci podręcznej zestawów. Alternatywnie można umieścić kod źródłowy w folderze App_Code witryny, w którym będzie dynamicznie kompilowany w czasie wykonywania. Aby zapoznać się z przewodnikiem, który demonstruje obie metody kompilowania, zobacz Przewodnik: opracowywanie i używanie niestandardowej kontrolki serwera sieci Web.

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

Po załadowaniu strony internetowej w przeglądarce można zobaczyć, jak różne dostosowania stylistyczne i inne renderowanie wprowadzone w kodzie MyWebPartChrome źródłowym klasy są wyświetlane w WebPart kontrolkach renderowanych w strefie.

Uwagi

Chrome składników Web Part odwołuje się do elementów interfejsu użytkownika peryferyjnego, które zawierają każdą WebPart kontrolkę lub kontrolkę serwera znajdującą WebPartZoneBase się w strefie. Chrome kontrolki zawiera jej obramowanie, pasek tytułu oraz ikony, tekst tytułu i menu czasowników wyświetlane na pasku tytułu. Wygląd chromu jest ustawiany na poziomie strefy i ma zastosowanie do wszystkich kontrolek serwera w strefie.

Zestaw kontrolek składników Web Part używa WebPartChrome klasy do renderowania elementu chrome dla WebPart kontrolek. Ponadto ta klasa umożliwia deweloperom dostosowywanie renderowania każdej pojedynczej sekcji (na przykład nagłówka lub stopki) WebPart kontrolek w WebPartZoneBase strefie bez konieczności obsługi renderowania wszystkich kontrolek dla tych kontrolek. Możesz na przykład zastąpić metodę CreateWebPartChromeStyle w celu dostosowania niektórych określonych atrybutów stylu zastosowanych do WebPartZoneBase strefy, ale możesz polegać na domyślnym renderowaniu, aby obsłużyć resztę.

Klasa WebPartChrome zawiera kilka ważnych metod, które są przydatne, gdy chcesz zastąpić renderowanie WebPart kontrolek. Jedną z nich jest CreateWebPartChromeStyle metoda, która umożliwia zmianę atrybutów stylu obiektu skojarzonego Style z obiektem WebPartChrome używanym do renderowania kontrolki. Innym jest WebPartChrome konstruktor, który jest używany podczas zastępowania CreateWebPartChrome metody w klasie niestandardowej WebPartZoneBase w celu utworzenia wystąpienia obiektu niestandardowego WebPartChrome . Inną przydatną metodą jest RenderPartContents metoda , której można użyć do kontrolowania renderowania obszaru zawartości kontrolek w strefie (w przeciwieństwie do elementów chrome, takich jak nagłówki, stopki i paski tytułu). Metoda GetWebPartVerbs umożliwia wykluczenie niektórych czasowników z renderowania, jeśli z jakiegoś powodu nie chcesz, aby użytkownicy widzieli te czasowniki w interfejsie użytkownika. Na koniec, jeśli chcesz uzyskać pełną kontrolę programową nad wszystkimi aspektami renderowania WebPart kontrolek, możesz zastąpić metodę RenderWebPart .

Przydatne są również kilka właściwości WebPartChrome klasy. Właściwości Zone i WebPartManager zapewniają odwołania do strefy skojarzonej odpowiednio z obiektem WebPartChrome i bieżącym WebPartManager wystąpieniem.

Uwagi dotyczące dziedziczenia

Dziedzicz z WebPartChrome klasy, gdy chcesz zastąpić domyślne renderowanie niektórych sekcji kontrolek WebPart lub serwerów. Opcjonalnie można zastąpić metodę CreateWebPartChromeStyle(WebPart, PartChromeType) , GetWebPartVerbs(WebPart) metodę , a zwłaszcza RenderPartContents(HtmlTextWriter, WebPart) metody lub RenderWebPart(HtmlTextWriter, WebPart) w celu dostosowania renderowania. Aby użyć WebPartChrome niestandardowej WebPart klasy dla kontrolek w strefie, utwórz strefę niestandardową pochodną WebPartZoneBase klasy i przesłoń jej CreateWebPartChrome() metodę. Aby uzyskać szczegółowe informacje na temat używania obiektu podrzędnego WebPartChrome w strefie, zobacz sekcję Przykład.

Konstruktory

WebPartChrome(WebPartZoneBase, WebPartManager)

Inicjuje nowe wystąpienie kontrolki.

Właściwości

DragDropEnabled

Pobiera wartość wskazującą, czy kontrolki można przeciągać do i z strefy.

WebPartManager

Pobiera odwołanie do bieżącego WebPartManager wystąpienia.

Zone

Pobiera odwołanie do skojarzonej WebPartZoneBase strefy.

Metody

CreateWebPartChromeStyle(WebPart, PartChromeType)

Tworzy obiekt stylu, który dostarcza atrybuty stylu dla każdej WebPart kontrolki renderowanej przez WebPartChrome obiekt.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
FilterWebPartVerbs(WebPartVerbCollection, WebPart)

Wyklucza określone czasowniki z renderowania na podstawie kryteriów dostarczonych przez dewelopera.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
GetWebPartChromeClientID(WebPart)

Pobiera identyfikator klienta dla WebPartChrome obiektu w postaci renderowanej na stronie sieci Web.

GetWebPartTitleClientID(WebPart)

Pobiera identyfikator klienta dla komórki tabeli zawierającej tytuł kontrolki WebPart .

GetWebPartVerbs(WebPart)

Pobiera kolekcję zleceń, które powinny być renderowane za pomocą kontrolki WebPart .

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
PerformPreRender()

Wykonuje zadania, które należy wykonać przed renderowaniem WebPart kontrolek.

RenderPartContents(HtmlTextWriter, WebPart)

Renderuje główny obszar zawartości kontrolki WebPart , z wyłączeniem nagłówka i stopki.

RenderWebPart(HtmlTextWriter, WebPart)

Renderuje pełną WebPart kontrolkę ze wszystkimi jej sekcjami.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też