WebPartChrome Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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) |