다음을 통해 공유


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

속성 값

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

예제

다음 코드 예제를 사용 하는 방법을 보여 줍니다는 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

코드 예제의 세 번째 부분은 웹 페이지입니다. 페이지에는 CatalogZone 사용자가 런타임에 페이지에 추가할 수 있도록 영역에 선언된 사용자 지정 WebPart 컨트롤이 있는 영역이 포함됩니다. 동적 컨트롤(프로그래밍 방식으로 또는 이와 같은 카탈로그에서 페이지에 추가되는 컨트롤)만 페이지에서 삭제할 수 있습니다. 정적 컨트롤(페이지 태그의 영역 내에서 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 영역 내에서 선언된 서버 컨트롤입니다. 이러한 컨트롤은 정적이므로 삭제할 수 없으므로 이 경우 삭제 경고 메시지가 표시되지 않습니다. 정적 컨트롤은 사용자가 닫을 수 있지만 닫힌 컨트롤은 페이지 카탈로그에 추가되며, 이 컨트롤은 사용자가 페이지에 다시 추가할 수 있는 반면 삭제된 컨트롤은 복구할 수 없습니다.

적용 대상

추가 정보