Bagikan melalui


WebPartChrome Kelas

Definisi

Memungkinkan pengembang untuk mengambil alih penyajian hanya untuk bagian yang dipilih dari WebPart atau kontrol server di zona WebPartZoneBase .

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

Contoh

Contoh kode berikut menunjukkan cara menggunakan WebPartChrome kelas untuk mengambil alih penyajian WebPart kontrol default di zona WebPartZoneBase .

Contoh kode memiliki empat bagian:

  • Kontrol pengguna yang memungkinkan Anda mengubah mode tampilan pada halaman Bagian Web.

  • Halaman Web yang menghosting semua kontrol dalam contoh.

  • Kelas yang berisi kode sumber untuk zona kustom WebPartZoneBase dan WebPartChrome kelas.

  • Penjelasan tentang cara kerja contoh.

Bagian pertama dari contoh kode adalah kontrol pengguna. Kode sumber untuk kontrol pengguna berasal dari topik lain. Agar contoh kode ini berfungsi, Anda perlu mendapatkan file .ascx untuk kontrol pengguna dari Panduan: Mengubah Mode Tampilan pada topik Halaman Bagian Web , dan menempatkan file di folder yang sama dengan halaman .aspx dalam contoh kode ini.

Bagian kedua dari contoh adalah halaman Web. Perhatikan bahwa ada direktif Register di dekat bagian atas file untuk mendaftarkan komponen yang dikompilasi dan awalan tag. Perhatikan juga bahwa halaman mereferensikan zona kustom menggunakan elemen <aspSample:MyZone> dan menyertakan beberapa kontrol server ASP.NET standar dalam zona. Kontrol server tidak menerapkan fungsionalitas aktual; mereka digunakan di sini hanya untuk menggambarkan WebPartChrome bagaimana fitur kelas berlaku untuk zona penyajian. Perhatikan bahwa kontrol server ini, meskipun mereka bukan kontrol aktual WebPart , masing-masing secara otomatis dibungkus (dengan ASP.NET) dengan GenericWebPart objek pada durasi, sehingga mereka akan memiliki fungsionalitas yang sama dengan WebPart kontrol.

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

Bagian ketiga dari contoh kode adalah sumber untuk zona kustom WebPartZoneBase dan WebPartChrome kelas. Di konstruktor untuk kelas zona kustom, kode memeriksa MyZone.RenderVerbsInMenu properti . Jika nilainya adalah true, kata kerja dirender dalam menu untuk setiap WebPart kontrol di zona tersebut. Ini adalah perilaku normal dan default dalam kumpulan kontrol Bagian Web. MyZone.RenderVerbsInMenu Jika nilai properti adalah false, yang merupakan default di zona kustom ini, kata kerja dirender satu per satu sebagai tautan di bilah judul setiap kontrol. Perhatikan bahwa dalam kode halaman Web tempat <aspSample:MyZone> elemen dideklarasikan, ada atribut yang RenderVerbsInMenu diatur ke true, sehingga kata kerja akan muncul di menu pada kontrol. Untuk bereksperimen dengan fitur ini, Anda dapat mengatur atribut deklaratif RenderVerbsInMenu ke false, dan mencatat bagaimana kata kerja dirender sebagai tautan.

Kelas kustom WebPartChrome mengambil alih penyajian pada beberapa metode, dan zona kustom membuat instans MyWebPartChrome kelas dalam metodenya CreateWebPartChrome . Ini menerapkan penyajian kustom ke halaman. Agar contoh kode berjalan, Anda harus mengkompilasi kode sumber ini. Anda dapat mengkompilasinya secara eksplisit dan menempatkan rakitan yang dihasilkan di folder Bin situs Web Anda atau singgahan perakitan global. Atau, Anda dapat meletakkan kode sumber di folder App_Code situs Anda, tempat kode tersebut akan dikompilasi secara dinamis pada durasi. Untuk panduan yang menunjukkan kedua metode kompilasi, lihat Panduan: Mengembangkan dan Menggunakan Kontrol Server Web Kustom.

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

Saat Anda memuat halaman Web di browser, Anda dapat melihat bagaimana berbagai gaya dan penyesuaian penyajian lainnya yang dibuat dalam kode MyWebPartChrome sumber kelas muncul pada WebPart kontrol yang dirender di zona tersebut.

Keterangan

Chrome Bagian Web mengacu pada elemen antarmuka pengguna periferal (UI) yang membingkai setiap WebPart kontrol atau kontrol server yang WebPartZoneBase terkandung dalam zona. Chrome untuk kontrol mencakup batasnya, bilah judulnya, dan ikon, teks judul, dan menu kata kerja yang muncul di dalam bilah judul. Tampilan chrome diatur pada tingkat zona, dan berlaku untuk semua kontrol server di zona tersebut.

Set kontrol Bagian Web menggunakan WebPartChrome kelas untuk merender chrome untuk WebPart kontrol. Selain itu, kelas ini menyediakan cara bagi pengembang untuk menyesuaikan penyajian setiap bagian individu (seperti header atau footer) WebPart kontrol di WebPartZoneBase zona tanpa harus menangani semua penyajian untuk kontrol tersebut. Misalnya, Anda dapat mengambil CreateWebPartChromeStyle alih metode untuk menyesuaikan beberapa atribut gaya tertentu yang diterapkan ke zona tersebut WebPartZoneBase , tetapi Anda dapat mengandalkan penyajian default untuk menangani sisanya.

Kelas WebPartChrome berisi beberapa metode penting yang berguna ketika Anda ingin mengambil alih penyajian WebPart kontrol. Salah satunya adalah CreateWebPartChromeStyle metode , yang memungkinkan Anda mengubah atribut gaya objek yang Style terkait dengan objek yang WebPartChrome digunakan untuk merender kontrol. Yang lain adalah WebPartChrome konstruktor, yang Anda gunakan saat mengambil alih CreateWebPartChrome metode di kelas kustom WebPartZoneBase untuk membuat instans objek kustom WebPartChrome Anda. Metode lain yang berguna adalah RenderPartContents metode , yang dapat Anda gunakan untuk mengontrol penyajian area konten kontrol di zona (dibandingkan dengan elemen chrome seperti header, footer, dan bilah judul). Metode ini GetWebPartVerbs memungkinkan Anda untuk mengecualikan kata kerja tertentu agar tidak dirender, jika karena alasan tertentu Anda tidak ingin pengguna melihat kata kerja tersebut di UI. Terakhir, jika Anda ingin kontrol terprogram penuh atas semua aspek penyajian WebPart kontrol, Anda dapat mengambil alih metode .RenderWebPart

Beberapa properti WebPartChrome kelas juga berguna. Properti Zone dan WebPartManager memberikan referensi ke zona yang terkait dengan WebPartChrome objek dan instans saat ini WebPartManager .

Catatan Bagi Inheritor

Warisi dari WebPartChrome kelas ketika Anda ingin mengambil alih penyajian default bagian tertentu dari WebPart atau kontrol server. Anda dapat secara opsional mengambil CreateWebPartChromeStyle(WebPart, PartChromeType) alih metode, GetWebPartVerbs(WebPart) metode , dan terutama RenderPartContents(HtmlTextWriter, WebPart) metode atau RenderWebPart(HtmlTextWriter, WebPart) , untuk menyesuaikan penyajian. Untuk menggunakan kelas kustom WebPartChrome Anda untuk WebPart kontrol di zona, kembangkan zona kustom yang berasal dari WebPartZoneBase kelas , dan ambil alih metodenya CreateWebPartChrome() . Untuk detail tentang cara menggunakan objek anak WebPartChrome di zona, lihat bagian Contoh.

Konstruktor

WebPartChrome(WebPartZoneBase, WebPartManager)

Menginisialisasi instans kontrol baru.

Properti

DragDropEnabled

Mendapatkan nilai yang menunjukkan apakah kontrol dapat diseret ke dalam dan ke luar zona.

WebPartManager

Mendapatkan referensi ke instans saat ini WebPartManager .

Zone

Mendapatkan referensi ke zona terkait WebPartZoneBase .

Metode

CreateWebPartChromeStyle(WebPart, PartChromeType)

Membuat objek gaya yang memasok atribut gaya untuk setiap WebPart kontrol yang WebPartChrome dirender oleh objek.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
FilterWebPartVerbs(WebPartVerbCollection, WebPart)

Mengecualikan kata kerja tertentu agar tidak dirender, berdasarkan kriteria yang disediakan oleh pengembang.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
GetWebPartChromeClientID(WebPart)

Mendapatkan ID klien untuk objek seperti yang WebPartChrome dirender di halaman Web.

GetWebPartTitleClientID(WebPart)

Mendapatkan ID klien untuk sel tabel yang berisi judul untuk WebPart kontrol.

GetWebPartVerbs(WebPart)

Mendapatkan kumpulan kata kerja yang harus dirender dengan WebPart kontrol.

MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
PerformPreRender()

Melakukan tugas yang harus dilakukan sebelum merender WebPart kontrol.

RenderPartContents(HtmlTextWriter, WebPart)

Merender area WebPart konten utama kontrol, tidak termasuk header dan footer.

RenderWebPart(HtmlTextWriter, WebPart)

Merender kontrol penuh WebPart dengan semua bagiannya.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk

Lihat juga