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 範例區段取得使用者控制項的原始碼。 如需顯示模式和使用者控件運作方式的詳細資訊,請參閱 逐步解說:變更網頁元件頁面上的顯示模式。
範例的第二個部分是包含兩個區域的網頁,每個區域都包含兩個伺服器控件。 當使用者按下頁面上的 [移動 WebPart ] 按鈕時,方法中的 Button1_Click
程式代碼會將控件從第一個區域移至第二個區域中的新位置。 請注意,程式代碼必須先呼叫 GetGenericWebPart 方法,以擷取 GenericWebPart 包裝 list1
控件的物件。 這是必要的,因為方法的第一個WebPart參數MoveWebPart需要 控件,而 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>
載入頁面之後,按兩下 [移動WebPart ] 按鈕,並注意包含連結的控件會移至第二個區域中的中間位置。 透過呼叫 MoveWebPart 方法,以程序設計方式完成控件的移動。 您也可以使用 [顯示模式 ] 下拉式清單控件,將頁面切換為設計模式,在設計模式中,您可以將控件拖曳到其區域內的不同區域或不同位置。 控件 MoveWebPart 也會呼叫 WebPartManager 方法,以處理這類使用者起始的移動。
備註
控件 WebPartManager 會 MoveWebPart 使用 方法來移至 webPart
相同區域或不同區域中的新位置。 您可以直接從程式代碼呼叫此方法,而且當使用者使用 Web 元件使用者介面中的各種選項將控件移至新的位置時,也會叫用此方法 (UI) 。
必須先符合一些條件,才能 webPart
移動,而且大部分條件都是由本主題的例外狀況一節所列的專案所指出。 如果 webPart
尚未包含在 WebPartZoneBase 要開頭的區域中,則無法移至區域。
符合條件之後,會發生下列動作順序來移動 webPart
:
OnWebPartMoving 方法會引發 WebPartMoving 事件。
webPart
視需要) 從其目前區域移除 (,並新增至其目前區域內的新區域或新位置。OnWebPartMoved 方法會引發 WebPartMoved 事件。
zoneIndex
來源和目的地區域中每個WebPart控件的 會重設,以反映移動的控件。