WebPartChrome クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
開発者は、WebPart ゾーン内のWebPartZoneBaseコントロールまたはサーバー コントロールの選択したセクションに対してのみレンダリングをオーバーライドできます。
public ref class WebPartChrome
public class WebPartChrome
type WebPartChrome = class
Public Class WebPartChrome
- 継承
-
WebPartChrome
例
次のコード例では、WebPartChrome クラスを使用して、WebPart ゾーン内のWebPartZoneBase コントロールの既定のレンダリングをオーバーライドする方法を示します。
このコード例には、次の 4 つの部分があります。
Web パーツ ページの表示モードを変更できるユーザー コントロール。
この例のすべてのコントロールをホストする Web ページ。
カスタム WebPartZoneBase ゾーンと WebPartChrome クラスのソース コードを含むクラス。
この例のしくみの説明。
コード例の最初の部分は、ユーザー コントロールです。 ユーザー コントロールのソース コードは、別のトピックから取得されます。 このコード例を機能させるには、「 チュートリアル: Web パーツ ページでの表示モードの変更 」トピックからユーザー コントロールの .ascx ファイルを取得し、このコード例の .aspx ページと同じフォルダーにファイルを配置する必要があります。
この例の 2 番目の部分は Web ページです。 コンパイル済みコンポーネントとタグ プレフィックスを登録するために、ファイルの先頭付近に Register ディレクティブがあることに注意してください。 また、ページは要素 <aspSample:MyZone> を使用してカスタム ゾーンを参照し、ゾーン内のいくつかの標準 ASP.NET サーバー コントロールが含まれていることに注意してください。 サーバー コントロールは、実際の機能を実装していません。ここでは、 WebPartChrome クラス機能がレンダリング ゾーンにどのように適用されるかを示すためにのみ使用されます。 これらのサーバー コントロールは、実際の WebPart コントロールではありませんが、実行時に GenericWebPart オブジェクトを使用して (ASP.NET によって) 自動的にラップされるため、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>
コード例の 3 番目の部分は、カスタム WebPartZoneBase ゾーンと WebPartChrome クラスのソースです。 カスタム ゾーン クラスのコンストラクターで、コードによって MyZone.RenderVerbsInMenu プロパティがチェックされます。 値が trueの場合、ゾーン内の各 WebPart コントロールのメニューに動詞が表示されます。 これは、Web パーツ コントロール セットの通常の既定の動作です。
MyZone.RenderVerbsInMenuプロパティ値がこのカスタム ゾーンの既定値であるfalse場合、動詞は各コントロールのタイトル バーのリンクとして個別にレンダリングされます。
<aspSample:MyZone>要素が宣言されている Web ページ コードでは、コントロールのメニューに動詞が表示されるように、RenderVerbsInMenuに設定されたtrue属性があることに注意してください。 この機能を試すには、宣言型 RenderVerbsInMenu 属性を falseに設定し、動詞がリンクとしてレンダリングされる方法に注意してください。
カスタム WebPartChrome クラスは、複数のメソッドのレンダリングをオーバーライドし、カスタム ゾーンでは、MyWebPartChrome メソッドでCreateWebPartChrome クラスのインスタンスを作成します。 これにより、カスタム レンダリングがページに適用されます。 コード例を実行するには、このソース コードをコンパイルする必要があります。 明示的にコンパイルし、結果のアセンブリを Web サイトの Bin フォルダーまたはグローバル アセンブリ キャッシュに配置できます。 または、ソース コードをサイトの App_Code フォルダーに配置して、実行時に動的にコンパイルすることもできます。 両方のコンパイル方法を示すチュートリアルについては、「 チュートリアル: カスタム 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
ブラウザーで Web ページを読み込むと、 MyWebPartChrome クラスのソース コードで行われたさまざまなスタイルやその他のレンダリングのカスタマイズが、ゾーンにレンダリングされた WebPart コントロールにどのように表示されるかを確認できます。
注釈
Web パーツ クロムは、WebPart ゾーンに含まれる各WebPartZoneBase コントロールまたはサーバー コントロールをフレームに収める周辺機器ユーザー インターフェイス (UI) 要素を指します。 コントロールのクロムには、境界線、タイトル バー、およびタイトル バー内に表示されるアイコン、タイトル テキスト、動詞メニューが含まれます。 クロムの外観はゾーン レベルで設定され、ゾーン内のすべてのサーバー コントロールに適用されます。
Web パーツ コントロール セットは、 WebPartChrome クラスを使用して、 WebPart コントロールのクロムをレンダリングします。 さらに、このクラスを使用すると、開発者は、WebPart ゾーン内のWebPartZoneBase コントロールの個々のセクション (ヘッダーやフッターなど) のレンダリングをカスタマイズできます。これらのコントロールのすべてのレンダリングを処理する必要はありません。 たとえば、 CreateWebPartChromeStyle メソッドをオーバーライドして、 WebPartZoneBase ゾーンに適用される特定のスタイル属性をカスタマイズできますが、残りの部分は既定のレンダリングに依存できます。
WebPartChrome クラスには、WebPart コントロールのレンダリングをオーバーライドする場合に便利ないくつかの重要なメソッドが含まれています。 1 つは CreateWebPartChromeStyle メソッドで、コントロールのレンダリングに使用するStyle オブジェクトに関連付けられているWebPartChrome オブジェクトのスタイル属性を変更できます。 もう 1 つは、カスタム WebPartChrome クラスのCreateWebPartChrome メソッドをオーバーライドしてカスタム WebPartZoneBase オブジェクトのインスタンスを作成するときに使用するWebPartChrome コンストラクターです。 もう 1 つの便利な方法は、 RenderPartContents メソッドです。これは、(ヘッダー、フッター、タイトル バーなどのクロム要素ではなく) ゾーン内のコントロールのコンテンツ領域のレンダリングを制御するために使用できます。 GetWebPartVerbsメソッドを使用すると、何らかの理由でユーザーに UI でこれらの動詞を表示させたくない場合に、特定の動詞をレンダリングから除外できます。 最後に、 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) |
Web ページに表示される WebPartChrome オブジェクトのクライアント ID を取得します。 |
| GetWebPartTitleClientID(WebPart) |
WebPart コントロールのタイトルを含むテーブル セルのクライアント ID を取得します。 |
| GetWebPartVerbs(WebPart) |
WebPart コントロールでレンダリングする必要がある動詞のコレクションを取得します。 |
| MemberwiseClone() |
現在の Objectの簡易コピーを作成します。 (継承元 Object) |
| PerformPreRender() |
WebPart コントロールをレンダリングする前に実行する必要があるタスクを実行します。 |
| RenderPartContents(HtmlTextWriter, WebPart) |
ヘッダーとフッターを除く、 WebPart コントロールのメイン コンテンツ領域をレンダリングします。 |
| RenderWebPart(HtmlTextWriter, WebPart) |
すべてのセクションを含む完全な WebPart コントロールをレンダリングします。 |
| ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |