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 のコントロールではありませんが、実行時にオブジェクトで自動的にラップ (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>
コード例の 3 番目の部分は、カスタム WebPartZoneBase ゾーンと クラスのソースです WebPartChrome 。 カスタム ゾーン クラスのコンストラクターで、コードによって プロパティがチェックされます MyZone.RenderVerbsInMenu
。 値が の場合、 true
動詞はゾーン内の各コントロールの WebPart メニューに表示されます。 これは、Web パーツ コントロール セットの通常の既定の動作です。 プロパティ値 MyZone.RenderVerbsInMenu
がこのカスタム ゾーンの既定値である false
の場合、動詞は各コントロールのタイトル バーにリンクとして個別にレンダリングされます。 要素が <aspSample:MyZone>
宣言されている Web ページ コードでは、 属性が RenderVerbsInMenu
に true
設定されているため、動詞がコントロールのメニューに表示されることに注意してください。 この機能を試すには、宣言型 RenderVerbsInMenu
属性を に false
設定し、動詞がリンクとしてレンダリングされる方法に注意してください。
カスタム WebPartChrome クラスは、いくつかのメソッドのレンダリングをオーバーライドし、カスタム ゾーンは、そのCreateWebPartChromeメソッドで クラスのインスタンスをMyWebPartChrome
作成します。 これにより、カスタム レンダリングがページに適用されます。 コード例を実行するには、このソース コードをコンパイルする必要があります。 明示的にコンパイルし、結果のアセンブリを 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 コントロールまたはサーバー コントロールをフレームする周辺機器ユーザー インターフェイス (UI) 要素を WebPartZoneBase 指します。 コントロールのクロムには、境界線、タイトル バー、およびタイトル バー内に表示されるアイコン、タイトル テキスト、動詞メニューが含まれます。 クロムの外観はゾーン レベルで設定され、ゾーン内のすべてのサーバー コントロールに適用されます。
Web パーツ コントロール セットは、 クラスを WebPartChrome 使用してコントロールのクロムを WebPart レンダリングします。 さらに、このクラスは、開発者がこれらのコントロールのすべてのレンダリングを処理することなく、ゾーン内WebPartZoneBaseのコントロールの個々のWebPartセクション (ヘッダーやフッターなど) のレンダリングをカスタマイズする方法を提供します。 たとえば、 メソッドを CreateWebPartChromeStyle オーバーライドしてゾーンに適用される特定のスタイル属性を WebPartZoneBase カスタマイズできますが、残りの部分を処理するには既定のレンダリングを使用できます。
WebPartChromeクラスには、コントロールのレンダリングWebPartをオーバーライドする場合に役立ついくつかの重要なメソッドが含まれています。 1 つは CreateWebPartChromeStyle メソッドで、コントロールのレンダリングに使用するオブジェクトに Style 関連付けられているオブジェクトの WebPartChrome スタイル属性を変更できます。 もう 1 つは WebPartChrome 、カスタム クラスの メソッドを CreateWebPartChrome オーバーライドしてカスタム WebPartZoneBase オブジェクトの WebPartChrome インスタンスを作成するときに使用するコンストラクターです。 もう 1 つの便利な方法は RenderPartContents 、 メソッドです。これは、(ヘッダー、フッター、タイトル バーなどのクロム要素ではなく) ゾーン内のコントロールのコンテンツ領域のレンダリングを制御するために使用できます。 GetWebPartVerbsメソッドを使用すると、何らかの理由でユーザーに UI でこれらの動詞を表示させたくない場合に、特定の動詞をレンダリングから除外できます。 最後に、コントロールのレンダリングのすべての側面をプログラムで完全に WebPart 制御する場合は、 メソッドを RenderWebPart オーバーライドできます。
クラスのいくつかの WebPartChrome プロパティも便利です。 プロパティと WebPartManager プロパティはZone、それぞれ オブジェクトと現在WebPartManagerのインスタンスにWebPartChrome関連付けられているゾーンへの参照を提供します。
注意 (継承者)
または サーバー コントロールの特定の WebPartChrome セクションの既定のレンダリングをオーバーライドする場合は、 WebPart クラスから継承します。 必要に応じて、 メソッド、メソッド、GetWebPartVerbs(WebPart)特に メソッドまたは RenderWebPart(HtmlTextWriter, WebPart) メソッドをRenderPartContents(HtmlTextWriter, WebPart)オーバーライドCreateWebPartChromeStyle(WebPart, PartChromeType)して、レンダリングをカスタマイズできます。 ゾーン内のコントロールにカスタム 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) |
適用対象
こちらもご覧ください
.NET