WebPartManager.AddWebPart(WebPart, WebPartZoneBase, Int32) メソッド

定義

Web ページにプログラムで 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

Web ページに追加するか、ページ上で開く WebPart (あるいは、サーバー コントロールまたはユーザー コントロール)。

zone
WebPartZoneBase

webPart の追加先となる WebPartZoneBase

zoneIndex
Int32

webPart 内の他のコントロールに対して zone 内で zone が占める序数位置を表す整数。

戻り値

WebPart

ページに追加された WebPart コントロール。

例外

webPartnullです。

または zonenullです。

zone が、ゾーンの WebPartManager コントロールのコレクションに登録されていません。

  • または - webPart は、既に zone にあります。

zoneIndex の値が 0 未満です。

次のコード例は、プログラムによってページに AddWebPart サーバー コントロールを追加するメソッドの使用方法を示しています。 ページ マークアップには、空 <asp:webpartzone> の要素と要素が <asp:webpartmanager> 含まれています。 [ カレンダーの追加 ] ボタンが初めてクリックされると、イベント ハンドラーのコードによってコントロールが作成 Calendar され、オブジェクトとして GenericWebPart ゾーンに追加され、メソッドが AddWebPart 呼び出されます。

<%@ 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使用すると例外がスローされるため、プログラムによってページにコントロールを追加WebPartするには、プロパティによってWebPartManager.Controls参照されるコントロールのコレクションのメソッドではなくAdd、常にAddメソッドを使用する必要があります。 コントロールではない WebPart コントロール (つまり、実行時にコントロールで GenericWebPart ラップされるサーバー コントロール) を追加するには、最初にメソッドを呼び出 CreateWebPart してコントロールを作成し、メソッドを AddWebPart 呼び出してコントロールを追加する必要があります。 この方法のデモについては、「例」セクションを参照してください。

適用対象

こちらもご覧ください