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

Definición

Mueve un control WebPart o un control de servidor de una zona WebPartZoneBase a otra o a una posición nueva dentro de la misma zona.

public:
 virtual void MoveWebPart(System::Web::UI::WebControls::WebParts::WebPart ^ webPart, System::Web::UI::WebControls::WebParts::WebPartZoneBase ^ zone, int zoneIndex);
public virtual void MoveWebPart (System.Web.UI.WebControls.WebParts.WebPart webPart, System.Web.UI.WebControls.WebParts.WebPartZoneBase zone, int zoneIndex);
abstract member MoveWebPart : System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.WebPartZoneBase * int -> unit
override this.MoveWebPart : System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.WebPartZoneBase * int -> unit
Public Overridable Sub MoveWebPart (webPart As WebPart, zone As WebPartZoneBase, zoneIndex As Integer)

Parámetros

webPart
WebPart

Control WebPart u otro control de servidor que se está moviendo.

zone
WebPartZoneBase

Zona WebPartZoneBase de destino a la que se desplaza webPart.

zoneIndex
Int32

Entero que indica el índice de webPart respecto a otros controles en zone.

Excepciones

El valor del parámetro webPart no está incluido en la colección Controls del control WebPartManager.

o bien

El valor del parámetro zone no está incluido en la colección Zones del control WebPartManager.

o bien

La zona a la que hace referencia la propiedad Zone del control webPart es null, lo que significa que webPart no está incluido actualmente en una zona.

webPart o zone es null.

zoneIndex es menor que cero.

Ejemplos

En el ejemplo de código siguiente se muestra cómo llamar al MoveWebPart método directamente desde el código para mover un WebPart control de una zona a otra.

El ejemplo de código tiene tres partes:

  • Control de usuario para cambiar los modos de visualización.

  • Página web para hospedar los controles.

  • Explicación de cómo ejecutar el ejemplo de código.

La primera parte del ejemplo de código es el control de usuario para cambiar los modos de visualización. Puede obtener el código fuente del control de usuario en la sección Ejemplo de la información general de la WebPartManager clase. Para obtener más información sobre los modos de visualización y cómo funciona el control de usuario, vea Tutorial: Cambiar modos de presentación en una página de elementos web.

La segunda parte del ejemplo es una página web que contiene dos zonas, cada una de las cuales contiene dos controles de servidor. Cuando un usuario hace clic en el botón Mover elemento web de la página, el código del Button1_Click método mueve un control de la primera zona a una nueva posición en la segunda zona. Observe que el código primero debe llamar al GetGenericWebPart método para recuperar el GenericWebPart objeto que encapsula el list1 control. Esto es necesario porque el primer parámetro del MoveWebPart método requiere un WebPart control, mientras que list1 es un control de servidor ASP.NET.

<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc1" 
    TagName="DisplayModeMenuCS"
    Src="~/displaymodemenucs.ascx" %>

<!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 Button1_Click(object sender, EventArgs e)
  {
    GenericWebPart part = mgr1.GetGenericWebPart(list1);
    mgr1.MoveWebPart(part, zone2, zone2.WebParts.Count - 1);
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="mgr1" runat="server" />
      <uc1:DisplayModeMenuCS ID="menu1" runat="server" />
      <asp:WebPartZone ID="zone1" runat="server">
        <ZoneTemplate>
          <asp:Label ID="Label1" runat="server" 
            Text="My Navigation" 
            Title="Zone 1 Label"/>
          <asp:BulletedList 
            ID="list1" 
            Runat="server"
            DisplayMode="HyperLink" 
            Title="Favorite Links"
            AuthorizationFilter="admin">
            <asp:ListItem Value="http://msdn.microsoft.com">
              MSDN
            </asp:ListItem>
            <asp:ListItem Value="http://www.asp.net">
              ASP.NET
            </asp:ListItem>
            <asp:ListItem Value="http://www.msn.com">
              MSN
            </asp:ListItem>
          </asp:BulletedList>        
        </ZoneTemplate>
      </asp:WebPartZone>
      <asp:WebPartZone ID="zone2" runat="server">
        <ZoneTemplate>
          <asp:Label ID="Label2" runat="server" 
            Text="My Data" 
            Title="Zone 2 Label"/>
          <asp:Calendar ID="Calendar1" runat="server" 
            Title="My Calendar"/>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Button ID="Button1" runat="server" 
        Text="Move WebPart" 
        OnClick="Button1_Click" />
    </div>
    </form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register TagPrefix="uc1" 
    TagName="DisplayModeMenuVB"
    Src="~/displaymodemenuvb.ascx" %>

<!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 Button1_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs)

    Dim part As GenericWebPart = mgr1.GetGenericWebPart(list1)
    mgr1.MoveWebPart(part, zone2, zone2.WebParts.Count - 1)
    
  End Sub
  
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="mgr1" runat="server" />
      <uc1:DisplayModeMenuVB ID="menu1" runat="server" />
      <asp:WebPartZone ID="zone1" runat="server">
        <ZoneTemplate>
          <asp:Label ID="Label1" runat="server" 
            Text="My Navigation" 
            Title="Zone 1 Label"/>
          <asp:BulletedList 
            ID="list1" 
            Runat="server"
            DisplayMode="HyperLink" 
            Title="Favorite Links"
            AuthorizationFilter="admin">
            <asp:ListItem Value="http://msdn.microsoft.com">
              MSDN
            </asp:ListItem>
            <asp:ListItem Value="http://www.asp.net">
              ASP.NET
            </asp:ListItem>
            <asp:ListItem Value="http://www.msn.com">
              MSN
            </asp:ListItem>
          </asp:BulletedList>        
        </ZoneTemplate>
      </asp:WebPartZone>
      <asp:WebPartZone ID="zone2" runat="server">
        <ZoneTemplate>
          <asp:Label ID="Label2" runat="server" 
            Text="My Data" 
            Title="Zone 2 Label"/>
          <asp:Calendar ID="Calendar1" runat="server" 
            Title="My Calendar"/>
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Button ID="Button1" runat="server" 
        Text="Move WebPart" 
        OnClick="Button1_Click" />
    </div>
    </form>
</body>
</html>

Una vez que se cargue la página, haga clic en el botón Mover elemento web y observe que el control que contiene los vínculos se mueve a la posición central de la segunda zona. Este movimiento del control se logra mediante programación llamando al MoveWebPart método . También puede usar el control de lista desplegable Modo de visualización para cambiar la página al modo de diseño y, en modo de diseño, puede arrastrar los controles a diferentes zonas o posiciones diferentes dentro de sus zonas. El MoveWebPart control también llama al método para controlar dichos movimientos iniciados por el WebPartManager usuario.

Comentarios

El WebPartManager control usa el MoveWebPart método para pasar webPart a una nueva ubicación de la misma zona o en otra zona. Puede llamar a este método directamente desde el código y también se invoca cuando un usuario mueve un control a una nueva posición mediante varias opciones en la interfaz de usuario (UI) de elementos web.

Se deben cumplir varias condiciones antes webPart de poder moverse y la mayoría de ellas se indican mediante elementos enumerados en la sección Excepciones de este tema. Si webPart no estaba incluido en una WebPartZoneBase zona con la que empezar, no se puede mover a una zona.

Una vez que se cumplan las condiciones, se produce la siguiente secuencia de acciones para mover webPart:

  1. El método OnWebPartMoving genera el evento WebPartMoving.

  2. webPart se quita de su zona actual (si es necesario) y se agrega a su nueva zona o nueva posición dentro de su zona actual.

  3. El método OnWebPartMoved genera el evento WebPartMoved.

  4. El zoneIndex de cada WebPart control de las zonas de origen y de destino se restablece para reflejar el control movido.

Se aplica a

Consulte también