다음을 통해 공유


WebPartManager.CreateWebPart(Control) 메서드

정의

컨트롤에 웹 파트 기능이 있을 수 있도록 개체를 사용하여 GenericWebPart 컨트롤이 아닌 WebPart 서버 컨트롤을 래핑합니다.

public:
 virtual System::Web::UI::WebControls::WebParts::GenericWebPart ^ CreateWebPart(System::Web::UI::Control ^ control);
public virtual System.Web.UI.WebControls.WebParts.GenericWebPart CreateWebPart(System.Web.UI.Control control);
abstract member CreateWebPart : System.Web.UI.Control -> System.Web.UI.WebControls.WebParts.GenericWebPart
override this.CreateWebPart : System.Web.UI.Control -> System.Web.UI.WebControls.WebParts.GenericWebPart
Public Overridable Function CreateWebPart (control As Control) As GenericWebPart

매개 변수

control
Control

컨트롤이 아닌 서버 컨트롤입니다 WebPart .

반환

GenericWebPart 래핑하고 control 실제 WebPart 컨트롤로 작동할 수 있게 하는 A입니다.

예제

다음 코드 예제에서는 메서드의 사용을 보여 줍니다 CreateWebPart . Button2_Click method이 메서드 CreateWebPart 는 영역에 추가하기 전에 개체를 사용하여 컨트롤을 GenericWebPart 래핑 Calendar 하기 위해 호출됩니다.

<%@ 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>

설명

CreateWebPart 메서드는 컨트롤이 아닌 WebPart 서버 컨트롤이 컨트롤과 동일한 기능을 WebPart 사용하므로 웹 파트 애플리케이션에 완전히 참여할 수 있도록 하는 주요 메커니즘입니다. 이 방법을 사용하면 사실상 모든 유형의 서버 컨트롤(표준 ASP.NET 컨트롤, 사용자 정의 컨트롤 및 사용자 지정 컨트롤)을 사용할 수 있으므로 개발자는 웹 파트 애플리케이션에서 사용할 수 있는 서버 컨트롤 수를 크게 확장합니다.

또한 이 컨트롤은 WebPartManager 다른 두 시나리오에서 이 메서드를 사용하여 서버 컨트롤을 개체로 GenericWebPart 래핑합니다. 사용자가 컨트롤을 사용하여 페이지에 서버 컨트롤을 ImportCatalogPart 추가할 때 가져온 컨트롤이 컨트롤이 아닌 WebPart 경우 메서드가 CreateWebPart 호출됩니다. 또한 서버 컨트롤이 웹 페이지의 CreateWebPart 영역 내에서 지속성 형식으로 WebPartZoneBase 선언되면 컨트롤이 아닌 WebPart 모든 컨트롤에 대해 메서드가 호출됩니다.

프로그래밍 방식으로 영역에 서버 컨트롤을 추가할 때 일반적인 방법은 메서드를 사용하여 CreateWebPart 개체로 GenericWebPart 컨트롤을 래핑한 다음 메서드를 호출 AddWebPart 하여 속성에서 참조 WebParts 하는 페이지의 모든 WebPart 컨트롤 컬렉션에 컨트롤을 추가하는 것입니다.

상속자 참고

웹 파트 컨트롤 집합과 함께 제공되는 기본 클래스 대신 파생 GenericWebPart 클래스를 사용하도록 이 메서드를 재정의할 수 있습니다.

적용 대상

추가 정보