WebPartManager.CloseWebPart(WebPart) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
WebPart 컨트롤을 닫습니다. 닫힌 컨트롤은 웹 페이지에 렌더링되지 않지만 다시 열 수 있습니다.
public:
void CloseWebPart(System::Web::UI::WebControls::WebParts::WebPart ^ webPart);
public void CloseWebPart (System.Web.UI.WebControls.WebParts.WebPart webPart);
member this.CloseWebPart : System.Web.UI.WebControls.WebParts.WebPart -> unit
Public Sub CloseWebPart (webPart As WebPart)
매개 변수
- webPart
- WebPart
WebPart에서 닫을 WebPartZoneBase 또는 서버 컨트롤입니다.
예외
webPart
이(가) null
인 경우
예제
다음 코드 예제에서는 CloseWebPart 메서드를 사용하는 방법을 보여 줍니다.
코드 예제에는 네 부분으로 구성됩니다.
페이지 표시 모드를 변경할 수 있는 사용자 컨트롤입니다.
사용자 지정 WebPart 컨트롤입니다.
웹 페이지입니다.
예제가 브라우저에서 작동하는 방식에 대한 설명입니다.
코드 예제의 첫 번째 부분은 디스플레이 모드를 변경하기 위한 사용자 컨트롤입니다. 클래스 개요의 예제 섹션에서 사용자 컨트롤에 WebPartManager 대한 소스 코드를 가져올 수 있습니다. 디스플레이 모드 및 사용자 컨트롤의 작동 방식에 대한 자세한 내용은 연습: 웹 파트 페이지에서 디스플레이 모드 변경을 참조하세요.
코드 예제의 두 번째 부분은 사용자 지정 WebPart 컨트롤입니다. 코드 예제를 실행하려면 이 소스 코드를 컴파일해야 합니다. 명시적으로 컴파일하고 결과 어셈블리를 웹 사이트의 Bin 폴더 또는 전역 어셈블리 캐시에 넣을 수 있습니다. 또는 런타임에 동적으로 컴파일되는 사이트의 App_Code 폴더에 소스 코드를 배치할 수 있습니다. 이 예제에서는 동적 컴파일 방법을 사용합니다. 따라서 웹 페이지의 맨 위에 있는 이 컨트롤에 Register
대한 지시문에 특성이 없습니다Assembly
. 컴파일 방법을 보여 주는 연습은 연습: 사용자 지정 웹 서버 컨트롤 개발 및 사용을 참조하세요.
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 TextDisplayWebPart : WebPart
{
private String _contentText = null;
TextBox input;
Label DisplayContent;
Literal lineBreak;
[Personalizable(), WebBrowsable]
public String ContentText
{
get { return _contentText; }
set { _contentText = value; }
}
protected override void CreateChildControls()
{
Controls.Clear();
DisplayContent = new Label();
DisplayContent.BackColor = Color.LightBlue;
DisplayContent.Text = this.ContentText;
this.Controls.Add(DisplayContent);
lineBreak = new Literal();
lineBreak.Text = @"<br />";
Controls.Add(lineBreak);
input = new TextBox();
this.Controls.Add(input);
Button update = new Button();
update.Text = "Set Label Content";
update.Click += new EventHandler(this.submit_Click);
this.Controls.Add(update);
}
private void submit_Click(object sender, EventArgs e)
{
// Update the label string.
if (!string.IsNullOrEmpty(input.Text))
{
_contentText = input.Text + @"<br />";
input.Text = String.Empty;
DisplayContent.Text = this.ContentText;
}
}
}
}
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 TextDisplayWebPart
Inherits WebPart
Private _contentText As String = Nothing
Private _fontStyle As String = Nothing
Private input As TextBox
Private DisplayContent As Label
Private lineBreak As Literal
<Personalizable(), WebBrowsable()> _
Public Property ContentText() As String
Get
Return _contentText
End Get
Set(ByVal value As String)
_contentText = value
End Set
End Property
Protected Overrides Sub CreateChildControls()
Controls.Clear()
DisplayContent = New Label()
DisplayContent.BackColor = Color.LightBlue
DisplayContent.Text = Me.ContentText
Me.Controls.Add(DisplayContent)
lineBreak = New Literal()
lineBreak.Text = "<br />"
Controls.Add(lineBreak)
input = New TextBox()
Me.Controls.Add(input)
Dim update As New Button()
update.Text = "Set Label Content"
AddHandler update.Click, AddressOf Me.submit_Click
Me.Controls.Add(update)
End Sub
Private Sub submit_Click(ByVal sender As Object, _
ByVal e As EventArgs)
' Update the label string.
If input.Text <> String.Empty Then
_contentText = input.Text + "<br />"
input.Text = String.Empty
DisplayContent.Text = Me.ContentText
End If
End Sub
End Class
End Namespace
코드 예제의 세 번째 부분은 웹 페이지입니다. 페이지에는 요소가 선언된 영역 <asp:pagecatalogpart>
이 포함되어 CatalogZone 있습니다. 이는 닫힌 WebPart 컨트롤을 포함하고 사용자가 페이지에 다시 추가할 수 있도록 하는 것입니다. 메서드는 Button1_Click
메서드를 CloseWebPart 직접 호출하여 사용자 지정 WebPart 컨트롤을 닫지만 사용자는 동사 메뉴를 통해 컨트롤을 닫을 수도 있습니다.
<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc1"
TagName="DisplayModeMenuCS"
Src="~/DisplayModeMenuCS.ascx" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.CS.Controls"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
mgr1.CloseWebPart(text1);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:WebPartManager ID="mgr1" runat="server" />
<uc1:DisplayModeMenuCS ID="menu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:TextDisplayWebPart ID="text1"
runat="server"
Title="My Text WebPart" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:CatalogZone ID="CatalogZone1" runat="server">
<ZoneTemplate>
<asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
</ZoneTemplate>
</asp:CatalogZone>
<asp:Button ID="Button1" runat="server"
Text="Close WebPart"
OnClick="Button1_Click" />
</form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register TagPrefix="uc1"
TagName="DisplayModeMenuVB"
Src="~/DisplayModeMenuVB.ascx" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.VB.Controls"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
mgr1.CloseWebPart(text1)
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:WebPartManager ID="mgr1" runat="server" />
<uc1:DisplayModeMenuVB ID="menu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:TextDisplayWebPart ID="text1"
runat="server"
Title="My Text WebPart" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:CatalogZone ID="CatalogZone1" runat="server">
<ZoneTemplate>
<asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
</ZoneTemplate>
</asp:CatalogZone>
<asp:Button ID="Button1" runat="server"
Text="Close WebPart"
OnClick="Button1_Click" />
</form>
</body>
</html>
브라우저에서 페이지를 로드한 후 컨트롤의 머리글에서 동사 메뉴(화살표 기호)를 클릭하고 닫기를 클릭하여 사용자 지정 WebPart 컨트롤을 닫습니다. 이제 표시 모드 드롭다운 목록 컨트롤에서 카탈로그 를 선택하여 페이지를 카탈로그 모드 로 변경합니다. 닫힌 컨트롤과 함께 페이지 카탈로그가 나타납니다. 닫힌 컨트롤 옆에 있는 확인란을 선택하고 추가 를 클릭하여 페이지에 추가한 다음 닫기를 클릭하여 페이지를 반환하여 모드를 찾습니다. 컨트롤이 페이지로 복원됩니다. 이제 WebPart 닫기 단추를 클릭하여 이번에는 다시 닫습니다.
설명
메서드는 CloseWebPartWebPart 원래 포함된 웹 페이지에서 렌더링되지 않도록 또는 다른 서버 컨트롤을 제거합니다. 닫힌 컨트롤은 닫힌 컨트롤에 PageCatalogPart 대한 참조를 유지하고 컨트롤을 페이지로 복원할 수 있도록 하는 개체에 추가됩니다. 닫힌 WebPart 컨트롤은 속성에서 참조하는 컬렉션에 WebParts 계속 나타납니다.
컨트롤을 닫는 것은 컨트롤을 삭제하는 경우와 다릅니다. 닫힌 컨트롤은 여전히 페이지로 복원할 수 있지만 삭제된 컨트롤 인스턴스는 영구적으로 제거되며 복원할 수 없습니다. WebPart 또는 서버 컨트롤이 정적(페이지 태그에 선언됨) 또는 동적(프로그래밍 방식으로 페이지에 추가되거나 웹 파트 카탈로그의 사용자가 추가됨)에 관계없이 페이지에서 닫고 다시 열 수 있습니다.
일반적으로 사용자는 동사 메뉴를 클릭하고 닫 WebPart 기 동사를 선택하여 컨트롤을 닫을 수 있습니다. 메서드를 직접 호출하고 에 대한 참조webPart
를 전달하여 컨트롤을 CloseWebPart 닫을 수도 있습니다.
컨트롤이 닫힌 페이지에서 개발자가 WebPart 요소를 선언 <asp:catalogzone>
하고 그 안에 요소를 추가하는 <asp:pagecatalogpart>
경우 사용자가 런타임에 닫힌 컨트롤을 페이지에 복원할 수 있는 간단한 UI(사용자 인터페이스)를 제공합니다. 사용자는 페이지를 카탈로그 표시 모드로 전환할 수 있으며, 닫힌 컨트롤이 페이지 카탈로그 내에 표시됩니다. 사용자는 닫힌 컨트롤을 선택하고 원하는 위치에 페이지에 다시 추가한 다음 선택한 컨트롤이 페이지로 복원되고 정상적으로 렌더링됩니다.
메서드가 CloseWebPart 호출되면 , SelectedWebPartChanging (여러 컨트롤이 있는 경우) 및 WebPartsDisconnecting (연결된 컨트롤이 있는 경우) 여러 이벤트가 발생WebPartClosing합니다. 일반적으로 개발자는 이러한 이벤트를 취소할 수 있지만 경우에 따라 취소할 수 없습니다. 자세한 내용은 , SelectedWebPartChanging및 WebPartsDisconnecting 이벤트에 대한 WebPartClosing설명서를 참조하세요.
적용 대상
추가 정보
.NET