次の方法で共有


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 コントロール。

例外

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 呼び出してコントロールを追加する必要があります。 この方法のデモについては、「例」セクションを参照してください。

適用対象

こちらもご覧ください