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

整數,表示 webPartzone 佔用的序號位置,相對於 zone 中的其他控制項。

傳回

WebPart

已加入至頁面的 WebPart 控制項。

例外狀況

webPartnull

-或- zonenull

zone 並未在 WebPartManager 控制項的區域集合中註冊。

-或- webPart 已經在 zone 中。

設定的值小於零。zoneIndex

範例

下列程式碼範例示範如何使用 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 參考的控制項複本。 系統會為控制項的複本產生新的識別碼,因此開發人員應該參考 WebPart 從 方法傳回的控制項,以取得新的識別碼值。 呼叫 方法以重新開啟先前關閉的控制項時,它會傳回參數所參考之控制項的 webPart 直接參考。

重要

您應該一律使用 AddWebPart 方法,而不是 Add 屬性所 WebPartManager.Controls 參考控制項集合的 方法,以程式設計方式將控制項新增 WebPart 至頁面,因為使用 Add 方法會擲回例外狀況。 若要新增不是 WebPart 控制項的控制項, (換句話說,將在執行時間以 GenericWebPart 控制項包裝的伺服器控制項) ,您應該先呼叫 CreateWebPart 方法來建立控制項,然後呼叫 AddWebPart 方法以新增控制項。 如需此方法的示範,請參閱一節。

適用於

另請參閱