WebPartManager.AddWebPart(WebPart, WebPartZoneBase, Int32) 메서드

정의

웹 페이지에 WebPart 컨트롤을 프로그래밍 방식으로 추가하기 위한 방법을 제공합니다.

public:
 System::Web::UI::WebControls::WebParts::WebPart ^ AddWebPart(System::Web::UI::WebControls::WebParts::WebPart ^ webPart, System::Web::UI::WebControls::WebParts::WebPartZoneBase ^ zone, int zoneIndex);
public System.Web.UI.WebControls.WebParts.WebPart AddWebPart (System.Web.UI.WebControls.WebParts.WebPart webPart, System.Web.UI.WebControls.WebParts.WebPartZoneBase zone, int zoneIndex);
member this.AddWebPart : System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.WebPartZoneBase * int -> System.Web.UI.WebControls.WebParts.WebPart
Public Function AddWebPart (webPart As WebPart, zone As WebPartZoneBase, zoneIndex As Integer) As WebPart

매개 변수

webPart
WebPart

웹 페이지에 추가하거나 페이지에서 열 WebPart(또는 서버 컨트롤이나 사용자 정의 컨트롤)입니다.

zone
WebPartZoneBase

webPart가 추가될 WebPartZoneBase입니다.

zoneIndex
Int32

webPart에서 zone의 다른 컨트롤을 기준으로 zone가 나타나는 서수 위치를 나타내는 정수입니다.

반환

WebPart

페이지에 추가된 WebPart 컨트롤입니다.

예외

webPart이(가) null인 경우

또는 zone이(가) null인 경우

zoneWebPartManager 컨트롤의 영역 컬렉션에 등록되지 않은 경우

또는 webPart가 이미 zone에 있는 경우

zoneIndex 값이 0보다 작은 경우

예제

다음 코드 예제에서는 페이지에 프로그래밍 방식으로 서버 컨트롤을 추가 하는 메서드의 AddWebPart 사용을 보여 줍니다. 페이지 태그에는 빈 <asp:webpartzone> 요소와 <asp:webpartmanager> 요소가 포함됩니다. 일정 추가 단추를 처음 클릭하면 이벤트 처리기의 코드에서 컨트롤을 Calendar 만들고 메서드를 호출 AddWebPart 하여 개체로 GenericWebPart 영역에 추가합니다.

<%@ Page Language="C#" %>

<!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 Button2_Click(object sender, EventArgs e)
  {
    WebPartManager mgr = WebPartManager1;
    Calendar cal = new Calendar();
    cal.ID = "cal1";
    GenericWebPart calWebPart = mgr.CreateWebPart(cal);
    mgr.AddWebPart(calWebPart, WebPartZone1, 1);
  }

  protected void Button1_Click(object sender, EventArgs e)
  {
    if (WebPartZone1.WebParts.Count > 1)
    {
      WebPart cal = WebPartZone1.WebParts[1];
      if (cal.Controls[0].GetType().Name == "Calendar" 
        && cal != null)
        WebPartManager1.DeleteWebPart(cal);
    }

  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Adding a Server Control</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="WebPartManager1" 
        runat="server" />
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <asp:BulletedList  
            DisplayMode="HyperLink" 
            ID="BulletedList1" 
            runat="server"
            Title="My Links">
            <asp:ListItem Value="http://www.microsoft.com">
            Microsoft
            </asp:ListItem>
            <asp:ListItem Value="http://www.msn.com">
            MSN
            </asp:ListItem>
            <asp:ListItem Value="http://www.contoso.com">
            Contoso Corp.
            </asp:ListItem>
          </asp:BulletedList>
        </ZoneTemplate>
      </asp:WebPartZone>
      <asp:Button ID="Button1" runat="server" 
        Text="Delete Calendar" 
        OnClick="Button1_Click" />
      <asp:Button ID="Button2" runat="server" 
        Text="Add Calendar" 
        OnClick="Button2_Click" />
    </div>
    </form>
</body>
</html>
<%@ Page Language="vb" %>

<!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 Button2_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs)
    Dim mgr As WebPartManager = WebPartManager1
    Dim cal As New Calendar()
    cal.ID = "cal1"
    Dim calWebPart As GenericWebPart = mgr.CreateWebPart(cal)
    mgr.AddWebPart(calWebPart, WebPartZone1, 1)
  End Sub

  Protected Sub Button1_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs)

    If WebPartZone1.WebParts.Count > 1 Then
      Dim cal As WebPart = WebPartZone1.WebParts(1)
      If cal.Controls(0).GetType().Name = "Calendar" AndAlso _
        cal IsNot Nothing Then
        WebPartManager1.DeleteWebPart(cal)
      End If
    End If
  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Adding a Server Control</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="WebPartManager1" 
        runat="server" />
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <asp:BulletedList  
            DisplayMode="HyperLink" 
            ID="BulletedList1" 
            runat="server"
            Title="My Links">
            <asp:ListItem Value="http://www.microsoft.com">
            Microsoft
            </asp:ListItem>
            <asp:ListItem Value="http://www.msn.com">
            MSN
            </asp:ListItem>
            <asp:ListItem Value="http://www.contoso.com">
            Contoso Corp.
            </asp:ListItem>
          </asp:BulletedList>
        </ZoneTemplate>
      </asp:WebPartZone>
      <asp:Button ID="Button1" runat="server" 
        Text="Delete Calendar" 
        OnClick="Button1_Click" />
      <asp:Button ID="Button2" runat="server" 
        Text="Add Calendar" 
        OnClick="Button2_Click" />
    </div>
    </form>
</body>
</html>

설명

AddWebPart 메서드는 페이지에 새 동적 WebPart 컨트롤을 추가하고 이전에 페이지에서 닫힌 정적 또는 동적 컨트롤을 다시 여는 데 사용됩니다. 메서드를 호출하여 새 컨트롤을 추가하면 실제로 매개 변수에서 참조되는 컨트롤의 복사본이 webPart 만들어집니다. 컨트롤의 복사본에 대해 새 ID가 생성되므로 개발자는 메서드에서 반환된 컨트롤을 참조 WebPart 하여 새 ID 값을 가져와야 합니다. 메서드가 호출되어 이전에 닫힌 컨트롤을 다시 열면 매개 변수에서 참조하는 컨트롤에 대한 직접 참조가 webPart 반환됩니다.

중요

메서드를 사용하면 예외가 AddWebPart 발생하므로 속성에서 참조하는 WebPartManager.Controls 컨트롤 컬렉션의 메서드가 아니라 Add 항상 메서드를 사용하여 Add 페이지에 프로그래밍 방식으로 컨트롤을 추가 WebPart 해야 합니다. 컨트롤이 아닌 WebPart 컨트롤(즉, 런타임에 컨트롤로 GenericWebPart 래핑되는 서버 컨트롤)을 추가하려면 먼저 메서드를 호출 CreateWebPart 하여 컨트롤을 만든 다음 메서드를 호출 AddWebPart 하여 컨트롤을 추가해야 합니다. 이 방법의 데모는 예제 섹션을 참조하세요.

적용 대상

추가 정보