WebPartManager.CreateDisplayModes 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
웹 파트 애플리케이션에서 사용할 수 있는 모든 디스플레이 모드의 집합을 만듭니다.
protected:
virtual System::Web::UI::WebControls::WebParts::WebPartDisplayModeCollection ^ CreateDisplayModes();
protected virtual System.Web.UI.WebControls.WebParts.WebPartDisplayModeCollection CreateDisplayModes ();
abstract member CreateDisplayModes : unit -> System.Web.UI.WebControls.WebParts.WebPartDisplayModeCollection
override this.CreateDisplayModes : unit -> System.Web.UI.WebControls.WebParts.WebPartDisplayModeCollection
Protected Overridable Function CreateDisplayModes () As WebPartDisplayModeCollection
반환
지원되는 디스플레이 모드가 모두 들어 있는 WebPartDisplayModeCollection입니다.
예제
다음 코드 예제에서는 CreateDisplayModes 메서드를 사용하는 방법을 보여 줍니다.
코드 예제에는 5개의 부분이 있습니다.
웹 파트 페이지의 디스플레이 모드를 변경할 수 있게 해 주는 사용자 정의 컨트롤입니다.
다른 컨트롤을 호스트하는 웹 페이지입니다.
웹 페이지의 영역에 상주 WebPartZone 하며 레이블에 텍스트를 입력하고 표시할 수 있는 사용자 컨트롤입니다.
두 개의 컨트롤을 포함하는 소스 코드 파일입니다. 하나는 사용자 지정 WebPartManager 컨트롤이고 다른 하나는 페이지의 기본 표시 모드에 추가할 사용자 지정 WebPartDisplayMode 개체입니다.
두 개의 사용자 지정 컨트롤과 사용자 지정 WebPart 인터페이스가 포함된 소스 코드 파일입니다.
예제가 브라우저에서 작동하는 방식에 대한 설명입니다.
코드 예제의 첫 번째 부분은 디스플레이 모드를 변경하기 위한 사용자 컨트롤입니다. 클래스 개요의 예제 섹션에서 사용자 컨트롤에 WebPartManager 대한 소스 코드를 가져올 수 있습니다. 디스플레이 모드 및 사용자 컨트롤의 작동 방식에 대한 자세한 내용은 연습: 웹 파트 페이지에서 디스플레이 모드 변경을 참조하세요.
예제의 두 번째 부분은 웹 페이지입니다. 여기에는 사용자 컨트롤과 사용자 지정 WebPartManager 컨트롤의 두 가지 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>
예제의 세 번째 부분은 텍스트를 입력하고 표시하기 위한 사용자 컨트롤입니다. 컨트롤을 MultiView 사용하여 UI의 여러 보기를 만듭니다. 한 보기는 단추와 함께 Button1
표시되며 다른 보기는 단추 없이 표시됩니다. 재정의된 OnPreRender
메서드에서 코드는 페이지가 현재 사용자 지정 표시 모드에 있는지 확인하고, 있는 경우 단추를 포함하는 사용자 정의 컨트롤의 첫 번째 보기를 표시합니다. 페이지가 사용자 지정 표시 모드에 없는 경우(예: 페이지가 찾아보기 또는 디자인 모드인 경우) 단추가 숨겨집니다.
<%@ 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>
예제의 네 번째 부분은 두 사용자 지정 클래스의 원본 파일입니다. 사용자 지정 WebPartManager 클래스는 메서드를 재정의 CreateDisplayModes 하고 먼저 기본 메서드를 호출하여 모든 기본 표시 모드를 추가한 다음 사용자 지정 표시 모드를 추가합니다. 사용자 지정 표시 모드 클래스인 InLineEditDisplayMode
는 에서 WebPartDisplayMode상속하기만 하면 생성자의 표시 모드 이름을 설정하고 여러 기본 속성을 재정의하여 사용자 지정 디스플레이의 특성을 설정합니다.
코드 예제를 실행하려면 이 소스 코드를 컴파일해야 합니다. 명시적으로 컴파일하고 결과 어셈블리를 웹 사이트의 Bin 폴더 또는 전역 어셈블리 캐시에 넣을 수 있습니다. 또는 런타임에 동적으로 컴파일되는 사이트의 App_Code 폴더에 소스 코드를 배치할 수 있습니다. 컴파일 방법을 보여 주는 연습은 연습: 사용자 지정 웹 서버 컨트롤 개발 및 사용을 참조하세요.
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
코드 예제를 실행하려면 브라우저에서 페이지를 로드합니다. 페이지가 현재 찾아보기 모드에 있으며 단추가 표시되지 않습니다.
표시 모드 드롭다운 목록 컨트롤을 사용하여 페이지를 인라인 디스플레이 편집 모드로 변경하고 이제 Button1
단추가 아래쪽 사용자 컨트롤에 표시되는지 확인합니다. 텍스트를 추가하고 단추를 클릭하여 컨트롤을 업데이트합니다. 페이지 표시가 찾아보기 모드로 반환되고, 입력한 텍스트가 표시되고, 페이지가 더 이상 사용자 지정 표시 모드에 없기 때문에 단추가 다시 숨겨집니다.
설명
이 메서드는 특정 페이지에서 지원되는 디스플레이 모드뿐만 아니라 가능한 모든 디스플레이 모드 목록을 만듭니다. 지원되는 디스플레이 모드에 대한 자세한 내용은 속성을 참조 SupportedDisplayModes 하세요.
기본적으로 웹 파트 컨트롤 집합은 웹 파트 페이지에서 사용할 다음 표시 모드 집합을 만듭니다.
개발자는 또는 ToolZone 클래스에서 파생되는 사용자 지정 영역을 포함하거나 사용하지 않고 사용자 지정 표시 모드를 WebZone 만들 수 있습니다. 사용자 지정 표시 모드를 만들려면 클래스에서 WebPartDisplayMode 상속해야 하며, 페이지에서 지원되는 모드로 표시 모드를 추가하려면 클래스에서 WebPartManager 상속하고 메서드를 재정의 CreateDisplayModes 해야 합니다.
메서드를 사용하여 Add 표시 모드를 추가하는 경우 사용자에게 페이지에서 가능한 표시 모드를 제공하는 모든 UI(사용자 인터페이스) 컨트롤(예: ListBox 컨트롤)에 표시되도록 하려면 표시 모드를 추가해야 합니다.
적용 대상
추가 정보
.NET