WebPartManager.MoveWebPart(WebPart, WebPartZoneBase, Int32) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将一 WebPart 个或服务器控件从一个区域移到另一个 WebPartZoneBase 区域,或移动到同一区域中的新位置。
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)
参数
- zone
- WebPartZoneBase
要移动到的目标WebPartZoneBasewebPart。
- zoneIndex
- Int32
一个整数,指示相对于其他控件的webPart索引zone。
例外
webPart不包含在控件的Controls集合中WebPartManager。
-或-
zone不包含在控件的Zones集合中WebPartManager。
-或-
控件webPartZone属性引用的区域是null,这意味着webPart当前未包含在区域中。
webPart 或 zone 为 null.
zoneIndex 小于零。
示例
下面的代码示例演示如何直接从代码调用 MoveWebPart 方法,将控件从一个区域移到 WebPart 另一个区域。
该代码示例包含三个部分:
用于更改显示模式的用户控件。
用于承载控件的网页。
有关如何运行代码示例的说明。
代码示例的第一部分是用于更改显示模式的用户控件。 可以从类概述的“示例”部分获取用户控件的 WebPartManager 源代码。 有关显示模式和用户控件工作原理的详细信息,请参阅 演练:更改 Web 部件页上的显示模式。
本示例的第二部分是一个网页,其中包含两个区域,每个区域都包含两个服务器控件。 当用户单击页面上的 “移动 Web 部件 ”按钮时,方法中的 Button1_Click 代码将控件从第一个区域移动到第二个区域中的新位置。 请注意,代码首先必须调用 GetGenericWebPart 该方法来检索 GenericWebPart 包装 list1 控件的对象。 这是必需的,因为 MoveWebPart 方法的第一个参数需要 WebPart 控件,而 list1 是 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>
加载页面后,单击 “移动 Web 部件 ”按钮,请注意包含链接的控件将移动到第二个区域中的中间位置。 通过调用 MoveWebPart 方法以编程方式完成控件的此移动。 还可以使用 显示模式 下拉列表控件将页面切换到设计模式,在设计模式下,可以将控件拖动到其区域中的不同区域或不同的位置。 控件 MoveWebPart 还调用 WebPartManager 该方法来处理此类用户发起的移动。
注解
该 WebPartManager 控件使用 MoveWebPart 该方法移动到 webPart 同一区域或不同区域中的新位置。 可以直接从代码调用此方法,当用户使用 Web 部件用户界面(UI)中的各种选项将控件移动到新位置时,也会调用此方法。
在移动之前 webPart 必须满足许多条件,其中大多数条件都由本主题的“例外”部分中列出的项指示。 如果未 webPart 包含在要 WebPartZoneBase 开头的区域中,则无法将其移动到区域中。
满足条件后,将执行以下操作序列以移动 webPart:
该方法 OnWebPartMoving 引发 WebPartMoving 事件。
webPart从其当前区域中删除(如有必要),并将其添加到其当前区域中的新区域或新位置。该方法 OnWebPartMoved 引发 WebPartMoved 事件。
zoneIndex源区域和目标区域中的每个WebPart控件都会重置,以反映移动的控件。