WebPartManager.AddWebPart(WebPart, WebPartZoneBase, Int32) Método

Definición

Proporciona el método de programación estándar para agregar controles WebPart a una página Web.Provides the standard programmatic method for adding WebPart controls to a Web page.

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

Parámetros

webPart
WebPart

WebPart (o control de servidor o de usuario) que se va a agregar a una página web o que se va a abrir en una página.The WebPart (or server or user control) to be added to a Web page or opened on a page.

zone
WebPartZoneBase

Zona WebPartZoneBase a la que se va a agregar webPart.The WebPartZoneBase that webPart is being added to.

zoneIndex
Int32

Entero que representa la posición ordinal que webPart ocupa en zone respecto a otros controles en zone.An integer that represents the ordinal position that webPart occupies in zone, relative to other controls in zone.

Devoluciones

WebPart

Control WebPart que se ha agregado a la página.A WebPart control that was added to the page.

Excepciones

webPart es null.webPart is null.

O bien-or- zone es null.zone is null.

zone no está registrado en la colección de zonas del control WebPartManager.zone is not registered in the WebPartManager control's collection of zones.

o bien-or- webPart ya está en zone.webPart is already in zone.

El valor de zoneIndex es menor que cero.The value of zoneIndex is less than zero.

Ejemplos

En el ejemplo de código siguiente se muestra el uso del AddWebPart método para agregar un control de servidor mediante programación a una página.The following code example demonstrates use of the AddWebPart method to add a server control programmatically to a page. El marcado de página contiene un <asp:webpartzone> elemento vacío y un <asp:webpartmanager> elemento.The page markup contains an empty <asp:webpartzone> element, and an <asp:webpartmanager> element. La primera vez que se hace clic en el botón Agregar calendario , el código del controlador de eventos crea un Calendar control y lo agrega a una zona como un GenericWebPart objeto, llamando al AddWebPart método.The first time the Add Calendar button is clicked, the code in the event handler creates a Calendar control, and adds it to a zone as a GenericWebPart object, calling the AddWebPart method.

<%@ 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>

Comentarios

El AddWebPart método se usa para agregar nuevos controles dinámicos WebPart a una página y para volver a abrir los controles estáticos o dinámicos que se han cerrado previamente en una página.The AddWebPart method is used both to add new dynamic WebPart controls to a page, and to reopen static or dynamic controls that have previously been closed on a page. Cuando se llama al método para agregar un nuevo control, en realidad se crea una copia del control al que se hace referencia en el webPart parámetro.When the method is called to add a new control, it actually creates a copy of the control referenced in the webPart parameter. Se genera un nuevo identificador para la copia del control, por lo que los desarrolladores deben hacer referencia al WebPart control devuelto desde el método para obtener el nuevo valor de identificador.A new ID is generated for the copy of the control, so developers should reference the WebPart control returned from the method to get the new ID value. Cuando se llama al método para volver a abrir un control cerrado previamente, devuelve una referencia directa al control al que hace referencia el webPart parámetro.When the method is called to reopen a previously closed control, it returns a direct reference to the control referenced by the webPart parameter.

Importante

Siempre debe usar el AddWebPart método, en lugar del Add método de la colección de controles a los que hace referencia la WebPartManager.Controls propiedad, para agregar WebPart controles mediante programación a la página, porque el uso del Add método produce una excepción.You should always use the AddWebPart method, rather than the Add method of the collection of controls referenced by the WebPartManager.Controls property, to add WebPart controls programmatically to the page, because using the Add method throws an exception. Para agregar un control que no sea un WebPart control (es decir, un control de servidor que se ajustará con un GenericWebPart control en tiempo de ejecución), primero debe llamar al CreateWebPart método para crear el control y, a continuación, llamar al AddWebPart método para agregar el control.To add a control that is not a WebPart control (in other words, a server control that will be wrapped with a GenericWebPart control at run time), you should first call the CreateWebPart method to create the control, and then call the AddWebPart method to add the control. Para ver una demostración de este enfoque, vea la sección ejemplo.For a demonstration of this approach, see the Example section.

Se aplica a

Consulte también