WebPartChrome クラス

定義

開発者が、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 をオーバーライドする場合に役立ついくつかの重要なメソッドが含まれています。 CreateWebPartChromeStyle 1 つはメソッドで、コントロールのレンダリングに使用するオブジェクトにStyle関連付WebPartChromeけられているオブジェクトのスタイル属性を変更できます。 もう 1 つは WebPartChrome 、カスタム クラスのメソッドをオーバーライド CreateWebPartChrome してカスタム WebPartZoneBase オブジェクトの WebPartChrome インスタンスを作成するときに使用するコンストラクターです。 もう 1 つの便利な方法は RenderPartContents 、(ヘッダー、フッター、タイトル バーなどのクロム要素ではなく) ゾーン内のコントロールのコンテンツ領域のレンダリングを制御するために使用できるメソッドです。 この GetWebPartVerbs メソッドを使用すると、何らかの理由でユーザーにこれらの動詞を UI で表示させたくない場合に、特定の動詞をレンダリングから除外できます。 最後に、コントロールのレンダリング WebPart のすべての側面をプログラムで完全に制御する場合は、メソッドを RenderWebPart オーバーライドできます。

クラスのいくつかの WebPartChrome プロパティも便利です。 プロパティとWebPartManagerプロパティはZone、それぞれオブジェクトと現在WebPartManagerのインスタンスにWebPartChrome関連付けられているゾーンへの参照を提供します。

注意 (継承者)

特定のセクションまたはサーバー コントロールの WebPartChrome 既定のレンダリングをオーバーライドする場合は WebPart 、クラスから継承します。 必要に応じて、メソッド、メソッド、特にGetWebPartVerbs(WebPart)RenderPartContents(HtmlTextWriter, WebPart)メソッドをRenderWebPart(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)

適用対象

こちらもご覧ください