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
webPart
要移动到的目标 WebPartZoneBase。
- zoneIndex
- Int32
一个整数,指示 webPart
在 zone
中相对于其他控件的索引。
例外
webPart
未包含在 Controls 控件的 WebPartManager 集合中。
- 或 -
zone
未包含在 Zones 控件的 WebPartManager 集合中。
- 或 -
webPart
控件的 Zone 属性所引用的区域为 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控件的 以反映移动的控件。