WebPartChrome Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Позволяет разработчикам переопределять способ отрисовки только для выделенных разделов элементов управления WebPart или серверных элементов управления в зоне WebPartZoneBase.
public ref class WebPartChrome
public class WebPartChrome
type WebPartChrome = class
Public Class WebPartChrome
- Наследование
-
WebPartChrome
Примеры
В следующем примере кода показано, как использовать WebPartChrome класс для переопределения отрисовки WebPart элементов управления по умолчанию в WebPartZoneBase зоне.
Пример кода состоит из четырех частей:
Пользовательский элемент управления, позволяющий изменять режимы отображения на странице веб-части.
Веб-страница, на которую размещены все элементы управления в примере.
Класс, содержащий исходный код для пользовательской WebPartZoneBase зоны и WebPartChrome класса.
Объяснение того, как работает пример.
Первая часть примера кода — это пользовательский элемент управления. Исходный код пользовательского элемента управления поступает из другого раздела. Чтобы этот пример кода работал, необходимо получить ASCX-файл для пользовательского элемента управления из пошагового руководства: изменение режимов отображения в разделе страницы веб-части и поместить файл в ту же папку, что и 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 класс переопределяет отрисовку несколькими методами, а пользовательская зона создает экземпляр MyWebPartChrome
класса в его CreateWebPartChrome методе. Это применяет настраиваемую отрисовку к странице. Для запуска примера кода необходимо скомпилировать этот исходный код. Его можно скомпилировать явным образом и поместить результирующая сборка в папку 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 класса. WebPartManager Свойства Zone предоставляют ссылки на зону, связанную с WebPartChrome объектом и текущим WebPartManager экземпляром соответственно.
Примечания для тех, кто наследует этот метод
Наследуется от WebPartChrome класса, когда требуется переопределить отрисовку определенных разделов или серверных WebPart элементов управления по умолчанию. При необходимости можно переопределить CreateWebPartChromeStyle(WebPart, PartChromeType) метод, GetWebPartVerbs(WebPart) метод и особенно RenderPartContents(HtmlTextWriter, WebPart) методы RenderWebPart(HtmlTextWriter, WebPart) , чтобы настроить отрисовку. Чтобы использовать пользовательский класс для WebPart элементов управления в зоне, разработайте пользовательскую WebPartChrome зону, производную от 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) |