Udostępnij za pośrednictwem


WebPartManager.AddWebPart(WebPart, WebPartZoneBase, Int32) Metoda

Definicja

Udostępnia standardową metodę programową dodawania WebPart kontrolek do strony sieci Web.

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

Parametry

webPart
WebPart

Element (lub serwer lub kontrolka WebPart użytkownika) do dodania do strony sieci Web lub otwarty na stronie.

zone
WebPartZoneBase

Element WebPartZoneBase , do którego webPart jest dodawany element .

zoneIndex
Int32

Liczba całkowita reprezentująca położenie porządkowe, które webPart zajmuje w zoneelemecie , względem innych kontrolek w elemecie zone.

Zwraca

Kontrolka WebPart dodana do strony.

Wyjątki

webPart to null.

-lub-

zone to null.

zone nie jest zarejestrowany w WebPartManager kolekcji kontrolek stref.

-lub-

webPart znajduje się już w pliku zone.

Wartość jest zoneIndex mniejsza niż zero.

Przykłady

W poniższym przykładzie kodu pokazano użycie AddWebPart metody w celu programowego dodania kontrolki serwera do strony. Znaczniki strony zawierają pusty <asp:webpartzone> element i <asp:webpartmanager> element. Po pierwszym kliknięciu przycisku Dodaj kalendarz kod w procedurze obsługi zdarzeń tworzy kontrolkę Calendar i dodaje go do strefy jako GenericWebPart obiektu, wywołując metodę 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>

Uwagi

Metoda AddWebPart służy zarówno do dodawania nowych kontrolek dynamicznych WebPart do strony, jak i ponownego otwierania kontrolek statycznych lub dynamicznych, które zostały wcześniej zamknięte na stronie. Gdy metoda jest wywoływana w celu dodania nowej kontrolki, faktycznie tworzy kopię kontrolki, do której webPart odwołuje się parametr . Nowy identyfikator jest generowany dla kopii kontrolki, dlatego deweloperzy powinni odwołać WebPart się do kontrolki zwróconej z metody , aby uzyskać nową wartość identyfikatora. Gdy metoda jest wywoływana w celu ponownego otwarcia wcześniej zamkniętej kontrolki, zwraca bezpośrednie odwołanie do kontrolki webPart przywoływanych przez parametr .

Ważne

Zawsze należy użyć AddWebPart metody , a nie Add metody kolekcji kontrolek przywołynych przez WebPartManager.Controls właściwość , aby dodać WebPart kontrolki programowo do strony, ponieważ użycie Add metody zgłasza wyjątek. Aby dodać kontrolkę, która nie jest kontrolką WebPart (innymi słowy, kontrolka serwera, która zostanie opakowana za pomocą GenericWebPart kontrolki w czasie wykonywania), należy najpierw wywołać CreateWebPart metodę w celu utworzenia kontrolki, a następnie wywołać AddWebPart metodę w celu dodania kontrolki. Aby zapoznać się z tym podejściem, zobacz sekcję Przykład.

Dotyczy

Zobacz też