WebPartManager.CreateWebPart(Control) メソッド

定義

WebPart オブジェクトを持った GenericWebPart コントロール以外のサーバー コントロールが Web パーツ機能を備えることができるように、そのコントロールをラップします。

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 コントロール以外のサーバー コントロール。

戻り値

control をラップし、真の GenericWebPart コントロールとして機能できる WebPart

次のコード例では、 メソッドの使用方法を CreateWebPart 示します。 では、 Button2_Click methodメソッドが CreateWebPart 呼び出され、 Calendar ゾーンに追加する前に オブジェクトで 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>

注釈

メソッドは CreateWebPart 、コントロールではない WebPart サーバー コントロールがコントロールと同じ機能 WebPart を引き受け、Web パーツ アプリケーションに完全に参加できるようにする主なメカニズムです。 このメソッドを使用すると、開発者は Web パーツ アプリケーションで使用できるサーバー コントロールの数を大幅に増やします。これは、事実上あらゆる種類のサーバー コントロール (標準の ASP.NET コントロール、ユーザー コントロール、カスタム コントロール) を使用できるためです。

コントロールは WebPartManager 、他の 2 つのシナリオでもこのメソッドを使用して、サーバー コントロールを オブジェクトで GenericWebPart ラップします。 ユーザーが コントロールを使用 ImportCatalogPart してサーバー コントロールをページに追加すると、インポートされたコントロールがコントロールでない WebPart 場合は、 CreateWebPart メソッドが呼び出されます。 また、サーバー コントロールが Web ページ上のゾーン内 WebPartZoneBase で永続化形式で宣言されている場合、 CreateWebPart コントロールではない WebPart コントロールに対して メソッドが呼び出されます。

サーバー コントロールをプログラムでゾーンに追加する場合、一般的な方法は、 メソッドを CreateWebPart 使用してオブジェクトで GenericWebPart コントロールをラップし、 メソッドを AddWebPart 呼び出して、 プロパティによって参照されるページ上のすべての WebPart コントロールのコレクションにコントロールを WebParts 追加することです。

注意 (継承者)

このメソッドは、Web パーツ コントロール セットで提供される基本クラスではなく、派生 GenericWebPart クラスを使用するようにオーバーライドできます。

適用対象

こちらもご覧ください