WebPartManager.CreateDisplayModes メソッド
アセンブリ: System.Web (system.web.dll 内)

Dim returnValue As WebPartDisplayModeCollection returnValue = Me.CreateDisplayModes
サポートされているすべての表示モードが格納された WebPartDisplayModeCollection。

このメソッドは、特定のページでサポートされている表示モードだけでなく、使用可能なすべての表示モードのリストを作成します。サポートされる表示モードの詳細については、SupportedDisplayModes プロパティのトピックを参照してください。
既定では、Web パーツ コントロール セットは、Web パーツ ページ上で使用される次の表示モードのセットを作成します。
-
BrowseDisplayMode
-
DesignDisplayMode
-
EditDisplayMode
-
CatalogDisplayMode
-
ConnectDisplayMode
開発者は、WebZone クラスまたは ToolZone クラスから派生したカスタム ゾーンが付随するカスタム表示モード、またはこれらが付随しないカスタム表示モードを作成できます。カスタム表示モードを作成するには、WebPartDisplayMode クラスから継承し、ページ上でサポートされるモードとして表示モードを追加する必要があります。また、WebPartManager クラスから継承して CreateDisplayModes メソッドをオーバーライドする必要があります。
Add メソッドを使用して表示モードを追加する場合は、ページ上で使用可能な表示モードを、ユーザー インターフェイス (UI) コントロール (ListBox コントロールなど) でユーザーに表示する順番に追加する必要があります。

CreateDisplayModes メソッドを使用する方法を次のコード例に示します。
-
Web ページ上の WebPartZone ゾーン内に存在し、ラベルにテキストを入力および表示できるユーザー コントロール。
-
2 つのコントロールが含まれたソース コード ファイル。1 つはカスタム WebPartManager コントロールで、もう 1 つは、ページの既定の表示モードに追加するカスタム WebPartDisplayMode オブジェクトです。
-
2 つのカスタム WebPart コントロールおよび 1 つのカスタム インターフェイスが含まれたソース コード ファイル。
コード例の最初の部分は、表示モードを変更するユーザー コントロールです。このユーザー コントロールのソース コードは、WebPartManager クラスの概要の「例」から取得できます。表示モードの詳細およびユーザー コントロールの動作方法の詳細については、「チュートリアル : Web パーツ ページでの表示モードの変更」を参照してください。
コード例の 2 番目の部分は Web ページです。これには、いずれもユーザー コントロールである 2 つの WebPartZone コントロールと、カスタム WebPartManager コントロールが含まれています。ページの先頭近くには、ユーザー コントロールとコンパイルされたコントロールの名前空間を参照する Register ディレクティブがあります。
<%@ Page Language="vb" %> <%@ Register Src="TextDisplayvb.ascx" TagName="TextDisplay" TagPrefix="uc2" %> <%@ Register Src="DisplayModeMenuVB.ascx" TagName="DisplayModeMenuVB" TagPrefix="uc1" %> <%@ Register Namespace="Samples.AspNet.VB.Controls" TagPrefix="sample" Assembly="CustomDisplayModeVB" %> <html > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <uc1:DisplayModeMenuVB id="menu1" runat="server" /> <div> <sample:NewWebPartManager runat="server" ID="wpgm1" /> <br /> <table style="width: 100%"> <tr valign="top" align="center" > <td style="width: 100px; height: 123px"> <asp:WebPartZone ID="WebPartZone1" runat="server"> <ZoneTemplate> <uc2:TextDisplay ID="TextDisplay1" runat="server" /> </ZoneTemplate> </asp:WebPartZone> </td> <td style="width: 100px; height: 123px"> <asp:WebPartZone ID="WebPartZone2" runat="server" /> </td> </tr> </table> <br /> </div> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Register Src="TextDisplaycs.ascx" TagName="TextDisplay" TagPrefix="uc2" %> <%@ Register Src="DisplayModeMenuCS.ascx" TagName="DisplayModeMenuCS" TagPrefix="uc1" %> <%@ Register Namespace="Samples.AspNet.CS.Controls" TagPrefix="sample" Assembly="CustomDisplayModeCS" %> <html > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <uc1:DisplayModeMenuCS id="menu1" runat="server" /> <div> <sample:NewWebPartManager runat="server" ID="wpgm1" /> <br /> <table style="width: 100%"> <tr valign="top" align="center" > <td style="width: 100px; height: 123px"> <asp:WebPartZone ID="WebPartZone1" runat="server"> <ZoneTemplate> <uc2:TextDisplay ID="TextDisplay1" runat="server" /> </ZoneTemplate> </asp:WebPartZone> </td> <td style="width: 100px; height: 123px"> <asp:WebPartZone ID="WebPartZone2" runat="server" /> </td> </tr> </table> <br /> </div> </form> </body> </html>
コード例の 3 番目の部分は、テキストの入力と表示を行うユーザー コントロールです。これは、MultiView コントロールを使用して、UI の複数のビューを作成します。Button1 ボタンを含む 1 つのビューが表示され、その他は表示されません。コードは、オーバーライドされた OnPreRender メソッドでページが現在カスタム表示モードにあるかどうかをチェックし、そのモードにある場合は、ボタンが含まれたユーザー コントロールの最初のビューを表示します。ページがカスタム表示モードではなく、たとえばブラウザ モードまたはデザイン モードの場合、ボタンが非表示になります。
<%@ Control Language="vb" %> <%@ Import Namespace="Samples.AspNet.VB.Controls" %> <script runat="server"> Private _textContent As String <Personalizable()> _ Public Property TextContent() As String Get Return _textContent End Get Set(ByVal value As String) _textContent = Value End Set End Property Protected Overrides Sub OnPreRender(ByVal e As EventArgs) Label1.Text = Me.TextContent Dim viewIndex As Integer = 0 Dim wpmg As WebPartManager = _ WebPartManager.GetCurrentWebPartManager(Me.Page) Dim myNewWpmg As NewWebPartManager = _ CType(wpmg, NewWebPartManager) If Not (myNewWpmg Is Nothing) Then Dim mode As WebPartDisplayMode = _ myNewWpmg.SupportedDisplayModes(myNewWpmg.InLineEditDisplayMode.Name) If Not (mode Is Nothing) AndAlso _ myNewWpmg.DisplayMode Is mode Then viewIndex = 1 End If End If Me.MultiView1.ActiveViewIndex = viewIndex End Sub Protected Sub Button1_Click(ByVal sender As Object, _ ByVal e As EventArgs) Me.TextContent = TextBox1.Text Dim wpmg As WebPartManager = _ WebPartManager.GetCurrentWebPartManager(Me.Page) Dim mode As WebPartDisplayMode = _ wpmg.SupportedDisplayModes(WebPartManager.BrowseDisplayMode.Name) If Not (mode Is Nothing) Then wpmg.DisplayMode = mode End If End Sub </script> <asp:MultiView ID="MultiView1" runat="server"> <asp:View ID="View1" runat="server"> <asp:Label ID="Label1" runat="server" Text="Label" /> </asp:View> <asp:View ID="View2" runat="server"> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" OnClick="Button1_Click" runat="server" Text="Button" /> </asp:View> </asp:MultiView>
<%@ Control Language="C#" %> <%@ Import Namespace="Samples.AspNet.CS.Controls" %> <script runat="server"> private string textContent; [Personalizable] public string TextContent { get { return textContent; } set { textContent = value; } } protected override void OnPreRender(EventArgs e) { Label1.Text = this.textContent; int viewIndex = 0; WebPartManager wpmg = WebPartManager.GetCurrentWebPartManager(this.Page); NewWebPartManager myNewWpmg = wpmg as NewWebPartManager; if (myNewWpmg != null) { WebPartDisplayMode mode = myNewWpmg.SupportedDisplayModes[myNewWpmg.InLineEditDisplayMode.Name]; if (mode != null && myNewWpmg.DisplayMode == mode) { viewIndex = 1; } } this.MultiView1.ActiveViewIndex = viewIndex; } protected void Button1_Click(object sender, EventArgs e) { this.TextContent = TextBox1.Text; WebPartManager wpmg = WebPartManager.GetCurrentWebPartManager(this.Page); WebPartDisplayMode mode = wpmg.SupportedDisplayModes[WebPartManager.BrowseDisplayMode.Name]; if (mode != null) wpmg.DisplayMode = mode; } </script> <asp:MultiView ID="MultiView1" runat="server"> <asp:View ID="View1" runat="server"> <asp:Label ID="Label1" runat="server" Text="Label" /> </asp:View> <asp:View ID="View2" runat="server"> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" OnClick="Button1_Click" runat="server" Text="Button" /> </asp:View> </asp:MultiView>
コード例の 4 番目の部分は、2 つのカスタム クラスのソース ファイルです。カスタム WebPartManager クラスは CreateDisplayModes メソッドをオーバーライドし、最初に基本メソッドを呼び出して既定のすべての表示モードを追加し、次に、カスタム表示モードを追加します。カスタム表示モードのクラスである InLineEditDisplayMode は、単純に WebPartDisplayMode から継承され、コンストラクタ内の表示モードの名前を設定し、いくつかの基本プロパティをオーバーライドしてカスタム表示の特性を設定します。
コード例を実行するためには、このソース コードをコンパイルする必要があります。それを明示的にコンパイルし、コンパイル済みのアセンブリを Web サイトの Bin フォルダまたはグローバル アセンブリ キャッシュに配置できます。サイトの App_Code フォルダにソース コードを配置し、実行時に動的にコンパイルすることもできます。コンパイル方法を示すチュートリアルについては、「チュートリアル : カスタム サーバー コントロールの開発と使用」を参照してください。
Imports System Imports System.Collections.Generic Imports System.Configuration Imports System.Web Imports System.Web.Security Imports System.Security.Permissions 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 NewWebPartManager Inherits WebPartManager Private Shared _inLineEditDisplayMode As WebPartDisplayMode = _ New InlineWebPartEditDisplayMode() Public Sub New() End Sub Protected Overrides Function CreateDisplayModes() As WebPartDisplayModeCollection Dim displayModes As WebPartDisplayModeCollection = MyBase.CreateDisplayModes() displayModes.Add(_inLineEditDisplayMode) Return displayModes End Function Public ReadOnly Property InLineEditDisplayMode() As WebPartDisplayMode Get Return _inLineEditDisplayMode End Get End Property Private NotInheritable Class InlineWebPartEditDisplayMode Inherits WebPartDisplayMode Public Sub New() MyBase.New("Inline Edit Display") End Sub Public Overrides ReadOnly Property AllowPageDesign() As Boolean Get Return True End Get End Property Public Overrides ReadOnly Property RequiresPersonalization() _ As Boolean Get Return True End Get End Property Public Overrides ReadOnly Property ShowHiddenWebParts() As Boolean Get Return False End Get End Property Public Overrides ReadOnly Property AssociatedWithToolZone() _ As Boolean Get Return False End Get End Property Public Overrides Function IsEnabled(ByVal webPartManager _ As WebPartManager) As Boolean Return True End Function End Class End Class End Namespace
using System; using System.Collections.Generic; using System.Configuration; using System.Web; using System.Web.Security; using System.Security.Permissions; 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 NewWebPartManager : WebPartManager { private static readonly WebPartDisplayMode _inLineEditDisplayMode = new InlineWebPartEditDisplayMode(); public NewWebPartManager() {} protected override WebPartDisplayModeCollection CreateDisplayModes() { WebPartDisplayModeCollection displayModes = base.CreateDisplayModes(); displayModes.Add(_inLineEditDisplayMode); return displayModes; } public WebPartDisplayMode InLineEditDisplayMode { get { return _inLineEditDisplayMode; } } private sealed class InlineWebPartEditDisplayMode : WebPartDisplayMode { public InlineWebPartEditDisplayMode() : base("Inline Edit Display") { } public override bool AllowPageDesign { get { return true; } } public override bool RequiresPersonalization { get { return true; } } public override bool ShowHiddenWebParts { get { return false; } } public override bool AssociatedWithToolZone { get { return false; } } public override bool IsEnabled(WebPartManager webPartManager) { return true; } } } }
このコード例を実行するには、ブラウザにページを読み込みます。ページは現在ブラウズ モードにあり、ボタンは表示されません。[Display Mode] ドロップダウン リスト コントロールを使用して、ページを [Inline Edit Display] モードに変更し、下部のユーザー コントロールに Button1 ボタンが表示されることを確認します。何らかのテキストを追加し、このボタンをクリックしてコントロールを更新します。ページの表示がブラウズ モードに戻り、入力したテキストが表示されます。また、ページがカスタム表示モードではなくなったため、再びボタンが非表示になります。

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からWebPartManager.CreateDisplayModes メソッドを検索する場合は、下記のリンクをクリックしてください。

- WebPartManager.CreateDisplayModes メソッドのページへのリンク