WebPartManager.MoveWebPart(WebPart, WebPartZoneBase, Int32) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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
:
El método OnWebPartMoving genera el evento WebPartMoving.
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.El método OnWebPartMoved genera el evento WebPartMoved.
El
zoneIndex
de cada WebPart control de las zonas de origen y de destino se restablece para reflejar el control movido.