WebPartChrome Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Позволяет разработчикам переопределять способ отрисовки только для выделенных разделов элементов управления WebPart или серверных элементов управления в зоне WebPartZoneBase.
public ref class WebPartChrome
public class WebPartChrome
type WebPartChrome = class
Public Class WebPartChrome
- Наследование
-
WebPartChrome
Примеры
В следующем примере кода показано, как использовать WebPartChrome класс для переопределения отображения WebPart элементов управления по умолчанию в WebPartZoneBase зоне.
Пример кода состоит из четырех частей:
Пользовательский элемент управления, позволяющий изменять режимы отображения на странице веб-частей.
Веб-страница, на которую размещаются все элементы управления в примере.
Класс, содержащий исходный код для пользовательской WebPartZoneBase зоны и WebPartChrome класса .
Объяснение принципов работы примера.
Первая часть примера кода — это пользовательский элемент управления. Исходный код для пользовательского элемента управления поступает из другого раздела. Чтобы этот пример кода работал, необходимо получить ASCX-файл для пользовательского элемента управления из раздела Walkthrough: Changing Display Modes on a Web Parts Page (Пошаговое руководство: изменение режимов отображения на странице веб-частей ) и поместить файл в ту же папку, что и страница .aspx в этом примере кода.
Вторая часть примера — веб-страница. Обратите внимание, что в верхней части файла есть Register
директива для регистрации скомпилированного компонента и префикса тега. Также обратите внимание, что страница ссылается на пользовательскую зону с помощью элемента <aspSample:MyZone>
и включает несколько стандартных ASP.NET серверных элементов управления в пределах зоны. Серверные элементы управления не реализуют какие-либо фактические функциональные возможности; Они используются здесь только для демонстрации WebPartChrome того, как функции класса применяются к зонам отрисовки. Обратите внимание, что эти серверные элементы управления, хотя и не являются фактическими WebPart , каждый из них автоматически упаковывается (ASP.NET) с GenericWebPart объектом во время выполнения, поэтому они будут иметь те же функции, что и WebPart элементы управления.
<%@ 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>
Третья часть примера кода является источником для пользовательской WebPartZoneBase зоны и WebPartChrome класса . В конструкторе для класса настраиваемой зоны код проверяет MyZone.RenderVerbsInMenu
свойство . Если значение равно true
, команды отображаются в меню для каждого элемента WebPart управления в зоне. Это нормальное поведение по умолчанию в наборе элементов управления веб-частей.
MyZone.RenderVerbsInMenu
Если свойство имеет false
значение , которое является значением по умолчанию в этой настраиваемой зоне, команды отображаются по отдельности в виде ссылок в заголовке каждого элемента управления. Обратите внимание, что в коде веб-страницы, где <aspSample:MyZone>
объявлен элемент, атрибут RenderVerbsInMenu
имеет значение true
, чтобы команды отображались в меню элементов управления. Чтобы поэкспериментировать с этой функцией, можно задать декларативному RenderVerbsInMenu
атрибуту false
значение и заметить, как команды отображаются в виде ссылок.
Пользовательский WebPartChrome класс переопределяет отрисовку в нескольких методах, а пользовательская зона создает экземпляр класса в своем CreateWebPartChrome методе MyWebPartChrome
. При этом пользовательская отрисовка применяется к странице. Для выполнения примера кода необходимо скомпилировать этот исходный код. Ее можно скомпилировать явным образом и поместить полученную сборку в папку Bin веб-сайта или глобальный кэш сборок. Кроме того, исходный код можно поместить в папку App_Code сайта, где он будет динамически компилироваться во время выполнения. Пошаговое руководство, демонстрирующее оба метода компиляции, см. в разделе Пошаговое руководство. Разработка и использование пользовательского серверного веб-элемента управления.
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
При загрузке веб-страницы в браузере можно увидеть, как различные стилистические и другие настройки отрисовки, выполненные в исходном коде MyWebPartChrome
класса, отображаются на WebPart элементах управления, отображаемых в зоне.
Комментарии
Хром веб-частей относится к периферийным элементам пользовательского интерфейса, которые обрамляют каждый WebPart элемент управления или серверный элемент управления, содержащийся в WebPartZoneBase зоне. Хром для элемента управления включает его границу, строку заголовка, а также значки, текст заголовка и меню команд, которые отображаются в строке заголовка. Внешний вид хрома задается на уровне зоны и применяется ко всем серверным элементам управления в зоне.
Набор элементов управления веб-частей использует WebPartChrome класс для отрисовки хрома для WebPart элементов управления. Кроме того, этот класс позволяет разработчикам настраивать отрисовку любого отдельного раздела (например, верхнего или нижнего WebPart колонтитула) элементов управления в WebPartZoneBase зоне без необходимости обрабатывать все отрисовки для этих элементов управления. Например, можно переопределить CreateWebPartChromeStyle метод , чтобы настроить некоторые определенные атрибуты стиля, применяемые к WebPartZoneBase зоне, но для обработки остальных можно использовать отрисовку по умолчанию.
Класс WebPartChrome содержит несколько важных методов, которые полезны, если требуется переопределить отрисовку WebPart элементов управления. Одним из них является CreateWebPartChromeStyle метод , который позволяет изменять атрибуты стиля объекта, связанного Style с WebPartChrome объектом, используемым для отрисовки элемента управления. Другой — WebPartChrome конструктор, который используется при переопределении CreateWebPartChrome метода в пользовательском WebPartZoneBase классе для создания экземпляра пользовательского WebPartChrome объекта. Другим полезным методом RenderPartContents является метод , который можно использовать для управления отрисовкой области содержимого элементов управления в зоне (в отличие от элементов хрома, таких как колонтитулы, нижние колонтитулы и строки заголовков). Метод GetWebPartVerbs позволяет исключить определенные команды из отображения, если по какой-либо причине вы не хотите, чтобы пользователи видели эти команды в пользовательском интерфейсе. Наконец, если требуется полный программный контроль над всеми аспектами отрисовки WebPart элементов управления, можно переопределить RenderWebPart метод .
Также полезны некоторые WebPartChrome свойства класса . Свойства Zone и WebPartManager предоставляют ссылки на зону, связанную с WebPartChrome объектом и текущим WebPartManager экземпляром соответственно.
Примечания для тех, кто наследует этот метод
Наследуйте от класса , WebPartChrome если требуется переопределить отрисовку по умолчанию для определенных разделов или серверных WebPart элементов управления. При необходимости можно переопределить CreateWebPartChromeStyle(WebPart, PartChromeType) метод, GetWebPartVerbs(WebPart) метод и RenderPartContents(HtmlTextWriter, WebPart) особенно методы или RenderWebPart(HtmlTextWriter, WebPart) , чтобы настроить отрисовку. Чтобы использовать пользовательский WebPartChrome класс для WebPart элементов управления в зоне, разработайте пользовательскую зону, производную от WebPartZoneBase класса , и переопределите его CreateWebPartChrome() метод. Дополнительные сведения об использовании дочернего WebPartChrome объекта в зоне см. в разделе Примеры.
Конструкторы
WebPartChrome(WebPartZoneBase, WebPartManager) |
Инициализирует новый экземпляр элемента управления. |
Свойства
DragDropEnabled |
Получает значение, указывающее, можно ли перетаскивать элементы управления в зону и из зоны. |
WebPartManager |
Получает ссылку на текущий экземпляр WebPartManager. |
Zone |
Получает ссылку на сопоставленную зону WebPartZoneBase. |
Методы
CreateWebPartChromeStyle(WebPart, PartChromeType) |
Создает объект стиля, который передает атрибуты стиля для каждого элемента управления WebPart, отображаемого объектом WebPartChrome. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
FilterWebPartVerbs(WebPartVerbCollection, WebPart) |
Исключает определенные команды из списка отображения на основании условия, заданного разработчиком. |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
GetWebPartChromeClientID(WebPart) |
Получает идентификатор клиента для объекта WebPartChrome, который отображается на веб-странице. |
GetWebPartTitleClientID(WebPart) |
Получает идентификатор клиента для ячейки таблицы, которая содержит заголовок элемента управления WebPart. |
GetWebPartVerbs(WebPart) |
Получает коллекцию команд, которые должны отображаться с элементом управления WebPart. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
PerformPreRender() |
Выполняет задачи, которые необходимо завершить перед отрисовкой элементов управления WebPart. |
RenderPartContents(HtmlTextWriter, WebPart) |
Отображает основную область содержимого элемента управления WebPart за исключением колонтитулов. |
RenderWebPart(HtmlTextWriter, WebPart) |
Выполняет полное отображение элемента управления WebPart и всех его разделов. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |