WebPartDisplayModeCollection クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
WebPartDisplayMode オブジェクトのコレクションを含んでいます。 このクラスは継承できません。
public ref class WebPartDisplayModeCollection sealed : System::Collections::CollectionBase
public sealed class WebPartDisplayModeCollection : System.Collections.CollectionBase
type WebPartDisplayModeCollection = class
inherit CollectionBase
Public NotInheritable Class WebPartDisplayModeCollection
Inherits CollectionBase
- 継承
例
次のコード例は、 クラスの操作を WebPartDisplayModeCollection 示しています。 重要な点は、 クラスから継承し、 メソッドをWebPartManagerCreateDisplayModesオーバーライドして、コントロールによって作成されたコレクションにカスタム WebPartDisplayMode オブジェクトをWebPartManager追加するWebPartDisplayModeCollection必要があるということです。
このコード例には、次の 5 つの部分があります。
Web パーツ ページの表示モードを変更できるユーザー コントロール。
他のコントロールをホストする Web ページ。
Web ページ上のゾーンに WebPartZone 存在し、ラベルにテキストを入力して表示できるユーザー コントロール。
2 つのコントロールを含むソース コード ファイル。 1 つはカスタム WebPartManager コントロールです。もう 1 つは、ページの既定の表示モードに追加するカスタム WebPartDisplayMode オブジェクトです。
この例の動作の説明。
コード例の最初の部分である表示モードを変更できるユーザー コントロールのソース コードは、別のトピックから取得されます。 このコード例を機能させるには、「 チュートリアル: Web パーツ ページの表示モードを変更 する」トピックからユーザー コントロールの .ascx ファイルを取得し、このコード例の.aspx ページと同じフォルダーにファイルを配置する必要があります。
この例の 2 番目の部分は Web ページです。 これには、ユーザー コントロールとカスタム WebPartManager コントロールの両方の 2 つのWebPartZoneコントロールが含まれています。
Register
ページの上部にある ディレクティブに注目して、コンパイルされたコントロールのユーザー コントロールと名前空間を参照します。
<%@ 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" %>
<!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>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>
<%@ 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" %>
<!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>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>
この例の 3 番目の部分は、テキストを入力および表示するためのユーザー コントロールです。 コントロールを MultiView 使用して、ユーザー インターフェイス (UI) の複数のビューを作成していることに注意してください。 1 つのビューがボタンと共に表示され、もう 1 つのビューは表示されません。 オーバーライドされた OnPreRender
メソッドの では、コードはページが現在カスタム表示モードであるかどうかを確認し、表示されている場合は、ボタンを含むユーザー コントロールの最初のビューを表示します。 ページがカスタム表示モードでない場合 (たとえば、ページが参照モードまたはデザイン モードの場合)、ボタンは非表示になります。
重要
この例には、ユーザー入力を受け付けるテキスト ボックスがあります。これにより、セキュリティが脆弱になる可能性があります。 既定では、ASP.NET Web ページによって、ユーザー入力にスクリプトまたは HTML 要素が含まれていないかどうかが検証されます。 詳細については、「スクリプトによる攻略の概要」を参照してください。
<%@ 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>
<%@ 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>
この例の 4 番目の部分は、2 つのカスタム クラスのソース ファイルです。 カスタム WebPartManager クラスは メソッドを CreateDisplayModes オーバーライドし、基本メソッドを呼び出してすべての既定の表示モードを追加してから、カスタム表示モードを追加します。 カスタム表示モード クラス は、 InLineEditDisplayMode
を継承 WebPartDisplayModeするだけで、コンストラクター内の表示モードの名前を設定し、いくつかの基本プロパティをオーバーライドしてカスタム表示の特性を確立します。
コード例を実行するには、このソース コードをコンパイルする必要があります。 明示的にコンパイルし、結果のアセンブリを Web サイトの Bin フォルダーまたはグローバル アセンブリ キャッシュに配置できます。 または、ソース コードをサイトの App_Code フォルダーに配置して、実行時に動的にコンパイルすることもできます。 コンパイル方法を示すチュートリアルについては、「 チュートリアル: カスタム Web サーバー コントロールの開発と使用」を参照してください。
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;
}
}
}
}
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
コード例を実行するには、ブラウザーでページを読み込みます。 ページは現在ブラウズ モードであり、ボタンは表示されていないことに注意してください。 [表示モード] ドロップダウン リスト コントロールを使用して、ページをインライン編集表示モードに変更し、ボタンが下部のユーザー コントロールに表示されていることを確認します。 テキストを追加し、ボタンをクリックしてコントロールを更新します。 ページの表示がブラウズ モードに戻り、入力したテキストが表示され、ページがカスタム表示モードでないため、ボタンがもう一度非表示になっていることに注意してください。
注釈
クラスは WebPartDisplayModeCollection 、 オブジェクトの WebPartDisplayMode コレクションを格納するように設計されています。 これは、主に オブジェクトのコレクションWebPartDisplayModeをWebPartManager管理するために コントロールによって使用されます。
表示モードは、プロパティの現在の表示モードとして割り当てられたときに表示される Web ページの WebPartManager.DisplayMode 特別なビューです。 表示モードは、Web パーツ コントロール セットで使用され、ユーザーがコントロールの編集やページのレイアウトの再配置などの特別なタスクを実行できるページ ビューを作成します。 コントロールはWebPartManager、 などBrowseDisplayModeEditDisplayModeDesignDisplayModeCatalogDisplayMode、いくつかの表示モードを定義します。ConnectDisplayMode 表示モードのコレクションは、 プロパティによって WebPartManager.DisplayModes 参照されます。
Web パーツ コントロールを使用する特定の Web ページでは、特定の表示モードのみを使用できます。 既定のブラウズ モードとデザイン モードはほぼ常に使用できますが、他の表示モードは、対応するゾーンの種類がページに存在する場合にのみ使用できます。 詳細については、クラスの概要に関するページを WebPartDisplayMode 参照してください。
コントロールは WebPartManager 、そのプロパティを使用してページで使用可能な表示モードを SupportedDisplayModes 追跡します。 このプロパティは、 WebPartDisplayModeCollection サポートされているすべての表示モードを含むオブジェクトを参照します。
クラスには WebPartDisplayModeCollection 公開されたコンストラクターがないため、独自の新しいインスタンスを作成することはできません。 カスタム WebPartDisplayMode オブジェクトを作成し、コントロールで WebPartManager サポートされている表示モードのコレクションの一部にする場合は、 クラスから WebPartManager 継承し、メソッドを CreateDisplayModes オーバーライドし、基本メソッドを呼び出してコレクションを作成し、その Add メソッドを使用してカスタム表示モードをコレクションに追加する必要があります。
クラスには WebPartDisplayModeCollection 、2 つのパブリック プロパティがあります。 プロパティは IsReadOnly 、コレクションが読み取り専用かどうかを示す読み取り専用プロパティです。 オーバーロードされた Item[] プロパティは、コレクションのメンバーへのアクセスを提供します。
WebPartDisplayModeCollectionクラスには、いくつかのメソッドもあります。 Add既に説明した メソッドを使用すると、オブジェクトをコレクションに追加WebPartDisplayModeできます。 メソッドは Contains 、特定の表示モードがコレクションに存在するかどうかを決定します。 メソッドは CopyTo 、コレクションを オブジェクトの配列にコピーします。 メソッドは IndexOf 、コレクション内の特定の表示モードのインデックスを返します。 最後に、 メソッドを Insert 使用すると、コレクション内の特定のインデックスに表示モード オブジェクトを挿入できます。
プロパティ
Capacity |
CollectionBase に格納できる要素の数を取得または設定します。 (継承元 CollectionBase) |
Count |
CollectionBase インスタンスに含まれる要素の数を取得します。 このプロパティはオーバーライドできません。 (継承元 CollectionBase) |
InnerList |
ArrayList インスタンス内の要素のリストを格納する CollectionBase を取得します。 (継承元 CollectionBase) |
IsReadOnly |
コレクションが読み取り専用かどうかを示す値を取得します。 |
Item[Int32] |
コレクションにおけるインデックスに基づいて特定のメンバーを取得します。 |
Item[String] |
コレクションにおける一意の識別子に基づいて特定のメンバーを取得します。 |
List |
IList インスタンス内の要素のリストを格納する CollectionBase を取得します。 (継承元 CollectionBase) |
メソッド
明示的なインターフェイスの実装
拡張メソッド
Cast<TResult>(IEnumerable) |
IEnumerable の要素を、指定した型にキャストします。 |
OfType<TResult>(IEnumerable) |
指定された型に基づいて IEnumerable の要素をフィルター処理します。 |
AsParallel(IEnumerable) |
クエリの並列化を有効にします。 |
AsQueryable(IEnumerable) |
IEnumerable を IQueryable に変換します。 |
適用対象
こちらもご覧ください
.NET