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 하여 컨트롤에서 만든 컬렉션에 WebPartManager 사용자 지정 WebPartDisplayMode 개체를 추가해야 한다는 WebPartDisplayModeCollection 것입니다.
이 코드 예제에는 5개의 부분이 있습니다.
웹 파트 페이지의 디스플레이 모드를 변경할 수 있게 해 주는 사용자 정의 컨트롤입니다.
다른 컨트롤을 호스트하는 웹 페이지입니다.
웹 페이지의 영역에 상주 WebPartZone 하며 레이블에 텍스트를 입력하고 표시할 수 있는 사용자 컨트롤입니다.
두 개의 컨트롤을 포함하는 소스 코드 파일입니다. 하나는 사용자 지정 WebPartManager 컨트롤이고 다른 하나는 페이지의 기본 표시 모드에 추가할 사용자 지정 WebPartDisplayMode 개체입니다.
예제의 작동 방식을 설명 합니다.
코드 예제의 첫 번째 부분에 대한 소스 코드인 표시 모드를 변경할 수 있는 사용자 컨트롤은 다른 항목에서 제공됩니다. 작동 하려면이 코드 예제에서는 사용자 컨트롤은.ascx 파일을 가져올 필요가 합니다 연습: 웹 파트 페이지의 디스플레이 모드를 변경 항목 및이 코드 예제에서.aspx 페이지와 같은 폴더에 파일 위치입니다.
예제의 두 번째 부분은 웹 페이지입니다. 여기에는 사용자 정의 컨트롤과 사용자 지정 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(사용자 인터페이스)의 여러 보기를 만듭니다. 한 보기는 단추와 함께 표시되고 다른 보기는 단추 없이 표시됩니다. 재정의된 OnPreRender
메서드에서 코드는 페이지가 현재 사용자 지정 표시 모드에 있는지 확인하고, 이 경우 단추를 포함하는 사용자 정의 컨트롤의 첫 번째 보기를 표시합니다. 페이지가 사용자 지정 표시 모드(예: 페이지가 찾아보기 또는 디자인 모드인 경우)에 있지 않으면 단추가 숨겨집니다.
중요
이 예제에는 사용자 입력을 허용하는 텍스트 상자가 있으므로 보안상 위험할 수 있습니다. 기본적으로 ASP.NET 웹 페이지는 사용자 입력 내용에 스크립트 또는 HTML 요소가 포함되어 있지 않은지 확인합니다. 자세한 내용은 Script Exploits Overview를 참조하세요.
<%@ 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
코드 예제를 실행하려면 브라우저에서 페이지를 로드합니다. 페이지가 현재 찾아보기 모드에 있으며 단추가 표시되지 않습니다. 디스플레이 모드 드롭다운 목록 컨트롤을 사용하여 페이지를 인라인 디스플레이 편집 모드로 변경하고 이제 단추가 아래쪽 사용자 컨트롤에 표시되는지 확인합니다. 텍스트를 추가하고 단추를 클릭하여 컨트롤을 업데이트합니다. 페이지 표시가 찾아보기 모드로 반환되고, 입력한 텍스트가 표시되고, 페이지가 사용자 지정 표시 모드에 없기 때문에 단추가 다시 숨겨집니다.
설명
클래스는 WebPartDisplayModeCollection 개체의 WebPartDisplayMode 컬렉션을 포함하도록 설계되었습니다. 주로 사용 됩니다는 개체의 WebPartManagerWebPartDisplayMode 컬렉션을 관리 하는 컨트롤입니다.
표시 모드는 속성의 현재 표시 모드 WebPartManager.DisplayMode 로 할당될 때 나타나는 웹 페이지의 특수 보기입니다. 표시 모드는 웹 파트 컨트롤 집합에서 사용자가 편집 컨트롤과 같은 특수 작업을 수행하거나 페이지 레이아웃을 다시 정렬할 수 있는 페이지 보기를 만드는 데 사용됩니다. 컨트롤은 WebPartManager , DesignDisplayModeEditDisplayMode및 ConnectDisplayMode를 비롯한 BrowseDisplayMode여러 디스플레이 모드를 CatalogDisplayMode정의합니다. 표시 모드의 컬렉션은 속성에서 참조됩니다 WebPartManager.DisplayModes .
웹 파트 컨트롤을 사용하는 특정 웹 페이지에서는 특정 표시 모드만 사용할 수 있습니다. 기본 찾아보기 모드와 디자인 모드는 거의 항상 사용할 수 있지만 다른 디스플레이 모드는 해당 영역 유형이 페이지에 있는 경우에만 사용할 수 있습니다. 자세한 내용은 참조는 WebPartDisplayMode 클래스 개요입니다.
컨트롤은 WebPartManager 해당 속성이 있는 페이지에서 SupportedDisplayModes 사용 가능한 표시 모드를 추적합니다. 이 속성은 WebPartDisplayModeCollection 지원되는 모든 표시 모드가 포함된 개체를 참조합니다.
클래스에 WebPartDisplayModeCollection 노출된 생성자가 없으므로 고유한 새 인스턴스를 만들 수 없습니다. 사용자 지정 WebPartDisplayMode 개체를 만들고 컨트롤에서 WebPartManager 지원되는 표시 모드 컬렉션의 일부가 되도록 하려면 클래스에서 WebPartManager 상속하고, 메서드를 재정 CreateDisplayModes 의하고, 기본 메서드를 호출하여 컬렉션을 만든 다음, 해당 메서드를 사용하여 컬렉션에 사용자 지정 표시 모드를 Add 추가해야 합니다.
클래스에는 WebPartDisplayModeCollection 두 개의 공용 속성이 있습니다. 속성은 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) |
메서드
Add(WebPartDisplayMode) |
컬렉션에 WebPartDisplayMode 개체를 추가합니다. |
Clear() |
CollectionBase 인스턴스에서 개체를 모두 제거합니다. 이 메서드는 재정의할 수 없습니다. (다음에서 상속됨 CollectionBase) |
Contains(WebPartDisplayMode) |
특정 WebPartDisplayMode 개체가 컬렉션에 있는지 여부를 나타내는 값을 반환합니다. |
CopyTo(WebPartDisplayMode[], Int32) |
컬렉션을 WebPartDisplayMode 개체의 배열에 복사합니다. |
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetEnumerator() |
CollectionBase 인스턴스를 반복하는 열거자를 반환합니다. (다음에서 상속됨 CollectionBase) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
IndexOf(WebPartDisplayMode) |
컬렉션의 특정 멤버 위치를 반환합니다. |
Insert(Int32, WebPartDisplayMode) |
컬렉션의 지정된 인덱스 위치에 WebPartDisplayMode 개체를 삽입합니다. |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
OnClear() |
CollectionBase 인스턴스의 콘텐츠를 지운 후에 추가로 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
OnClearComplete() |
CollectionBase 인스턴스의 내용을 지운 후에 추가로 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
OnInsert(Int32, Object) |
CollectionBase 인스턴스에 새 요소를 삽입하기 전에 추가로 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
OnInsertComplete(Int32, Object) |
CollectionBase 인스턴스에 새 요소를 삽입한 후에 추가로 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
OnRemove(Int32, Object) |
CollectionBase 인스턴스에서 요소를 제거할 때 추가로 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
OnRemoveComplete(Int32, Object) |
CollectionBase 인스턴스에서 요소를 제거한 후에 추가로 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
OnSet(Int32, Object, Object) |
CollectionBase 인스턴스에 값을 설정하기 전에 추가로 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
OnSetComplete(Int32, Object, Object) |
CollectionBase 인스턴스에 값을 설정한 후에 추가로 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
OnValidate(Object) |
값의 유효성을 검사할 때 추가로 사용자 지정 프로세스를 수행합니다. (다음에서 상속됨 CollectionBase) |
RemoveAt(Int32) |
CollectionBase 인스턴스의 지정한 인덱스에서 요소를 제거합니다. 이 메서드는 재정의할 수 없습니다. (다음에서 상속됨 CollectionBase) |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
명시적 인터페이스 구현
확장 메서드
Cast<TResult>(IEnumerable) |
IEnumerable의 요소를 지정된 형식으로 캐스팅합니다. |
OfType<TResult>(IEnumerable) |
지정된 형식에 따라 IEnumerable의 요소를 필터링합니다. |
AsParallel(IEnumerable) |
쿼리를 병렬화할 수 있도록 합니다. |
AsQueryable(IEnumerable) |
IEnumerable을 IQueryable로 변환합니다. |
적용 대상
추가 정보
.NET