WebPartManager.DeleteWarning 속성

정의

최종 사용자가 컨트롤을 삭제할 때 해당 사용자에게 표시되는 사용자 지정 경고 메시지를 가져오거나 설정합니다.

public:
 virtual property System::String ^ DeleteWarning { System::String ^ get(); void set(System::String ^ value); };
public virtual string DeleteWarning { get; set; }
member this.DeleteWarning : string with get, set
Public Overridable Property DeleteWarning As String

속성 값

String

경고 메시지의 텍스트가 포함된 문자열입니다. 기본값은 지역화된 경고 메시지입니다.

예제

다음 코드 예제에서는 선언적 및 프로그래밍 방식으로 속성의 DeleteWarning 사용을 보여 줍니다.

코드 예제에는 다음과 같은 네 가지 부분이 있습니다.

  • 페이지 표시 모드를 변경할 수 있는 사용자 컨트롤입니다.

  • 사용자 지정 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

코드 예제의 세 번째 부분은 웹 페이지입니다. 페이지에는 사용자가 런타임에 페이지에 추가할 수 있도록 영역에 선언된 사용자 지정 WebPart 컨트롤이 있는 영역이 포함되어 CatalogZone 있습니다. 동적 컨트롤(프로그래밍 방식으로 또는 이와 같은 카탈로그에서 페이지에 추가되는 컨트롤)만 페이지에서 삭제할 수 있습니다. 정적 컨트롤(페이지 태그의 영역 내에서 WebPartZoneBase 선언된 컨트롤)은 닫을 수 있지만 삭제할 수는 없습니다. 요소는 <asp:webpartmanager> 특성을 사용하여 DeleteWarning 속성에 DeleteWarning 대한 사용자 지정 값을 선언합니다. 메서드는 Button1_Click 속성에 다른 사용자 지정 값을 DeleteWarning 할당합니다.

<%@ 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">
  
  const String NewWarning = @"If you delete this WebPart " + 
    "control instance, it will be permanently removed and " +
    "cannot be retrieved.  Do you still want to delete it?";
    
  protected void Button1_Click(object sender, EventArgs e)
  {
    mgr1.DeleteWarning = NewWarning;
  }

  // Hide the button to change the property when there is
  // no control available to delete.
  protected void Page_Load(object sender, EventArgs e)
  {
    if (WebPartZone1.WebParts.Count == 0)
      Button1.Visible = false;
    else
      Button1.Visible = true;
  }
</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" 
        DeleteWarning="Do you want to delete this control?" />
      <uc1:DisplayModeMenuCS ID="menu1" runat="server" />
      <h2>Delete Warning Example Page</h2>
      <asp:WebPartZone ID="WebPartZone1" runat="server" />
      <asp:CatalogZone ID="CatalogZone1" runat="server">
        <ZoneTemplate>
          <asp:DeclarativeCatalogPart 
            ID="DeclarativeCatalogPart1" 
            runat="server">
            <WebPartsTemplate>
              <aspSample:TextDisplayWebPart ID="text1" 
                runat="server" 
                Title="My Text WebPart" />
             </WebPartsTemplate>
          </asp:DeclarativeCatalogPart>  
        </ZoneTemplate>
      </asp:CatalogZone>
      <asp:Button ID="Button1" runat="server" 
        Text="Change Delete Warning" 
        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">
  
  Private Const NewWarning As String = "If you delete this WebPart " & _
    "control instance, it will be permanently removed and " & _
    "cannot be retrieved.  Do you still want to delete it?"

  Protected Sub Button1_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs)
    
    mgr1.DeleteWarning = NewWarning

  End Sub
  
  Protected Sub Page_Load(ByVal sender As Object, _
    ByVal e As EventArgs)

    If WebPartZone1.WebParts.Count = 0 Then
      Button1.Visible = False
    Else
      Button1.Visible = True
    End If
    
  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" 
        DeleteWarning="Do you want to delete this control?" />
      <uc1:DisplayModeMenuVB ID="menu1" runat="server" />
      <h2>Delete Warning Example Page</h2>
      <asp:WebPartZone ID="WebPartZone1" runat="server" />
      <asp:CatalogZone ID="CatalogZone1" runat="server">
        <ZoneTemplate>
          <asp:DeclarativeCatalogPart 
            ID="DeclarativeCatalogPart1" 
            runat="server">
            <WebPartsTemplate>
              <aspSample:TextDisplayWebPart ID="text1" 
                runat="server" 
                Title="My Text WebPart" />
             </WebPartsTemplate>
          </asp:DeclarativeCatalogPart>  
        </ZoneTemplate>
      </asp:CatalogZone>
      <asp:Button ID="Button1" runat="server" 
        Text="Change Delete Warning" 
         OnClick="Button1_Click" />
    </form>
</body>
</html>

브라우저에서 페이지를 로드한 후에는 컨트롤을 WebPart 페이지에 추가해야 합니다. 표시 모드 드롭다운 목록 컨트롤을 사용하여 카탈로그 모드를 선택합니다. 카탈로그가 나타나면 사용자 지정 컨트롤 옆의 확인란을 선택하고 추가 를 클릭하여 페이지에 추가한 다음 닫기를 클릭하여 페이지를 찾아보기 모드로 반환합니다. 이제 컨트롤이 표시되었으므로 삭제할 수 있습니다. 디스플레이 모드 컨트롤을 다시 사용하여 페이지를 디자인 모드로 전환합니다(페이지가 찾아보기 모드에 있는 동안에는 컨트롤을 삭제할 수 없음). 컨트롤의 머리글 WebPart 에서 동사 메뉴(화살표 기호)를 클릭하고 삭제 를 선택합니다. 특성에 대해 설정한 경고가 DeleteWarning 나타납니다. 취소 를 클릭합니다. 이제 속성 값을 프로그래밍 방식으로 변경하는 삭제 경고 변경 레이블이 지정된 단추를 클릭합니다. 컨트롤의 동사 메뉴에서 삭제 를 다시 선택하고 이번에는 다른 경고 메시지가 나타납니다.

설명

사용자가 컨트롤을 WebPart 삭제하면 일반적으로 기본 경고 메시지가 표시됩니다. 이 컨트롤 인스턴스가 삭제되면 삭제가 영구적임을 사용자에게 경고합니다. 페이지 개발자는 사용자에게 컨트롤의 새 인스턴스를 페이지에 추가하는 방법을 제공할 수 있지만(예: 컨트롤 카탈로그 WebPart 를 통해 또는 일부 프로그래밍 방식을 통해) 삭제된 컨트롤의 현재 인스턴스는 영구적으로 제거됩니다. 경고를 표시하는 대화 상자에는 사용자가 원하는 경우 삭제를 취소할 수 있는 단추가 포함됩니다.

DeleteWarning 속성을 사용하면 개발자가 사용자에게 표시되는 경고 메시지를 설정할 수 있습니다.

페이지 개발자가 이 속성에 빈 문자열("") 값을 할당하는 경우 사용자가 컨트롤을 삭제 WebPart 할 때 경고 메시지 대화 상자가 표시되지 않습니다.

참고

DeleteWarning 정적 WebPart 컨트롤 및 서버 컨트롤의 경우 속성이 표시되지 않습니다. 정적 컨트롤은 웹 페이지의 태그에서 영역 내에 WebPartZoneBase 선언된 서버 컨트롤입니다. 이러한 컨트롤은 정적이므로 삭제할 수 없으므로 이 경우 삭제 경고 메시지가 표시되지 않습니다. 정적 컨트롤은 사용자가 닫을 수 있지만, 삭제된 컨트롤은 복구할 수 없는 반면, 사용자가 페이지에 다시 추가할 수 있는 닫힌 컨트롤이 페이지 카탈로그에 추가됩니다.

적용 대상

추가 정보