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
WebPartZoneBase目標正在被移動。webPart
- zoneIndex
- Int32
一個整數表示 相 webPart 對於 內 zone其他控制項的指數。
例外狀況
webPart 不包含在 Controls 控制組的集合 WebPartManager 中。
-或-
zone 不包含在 Zones 控制組的集合 WebPartManager 中。
-或-
控制webPart屬性所參考Zone的區域為 null,表示目前webPart不包含在該區域內。
webPart 或 zone 為 null。
zoneIndex 小於零。
範例
以下程式碼範例示範如何直接從程式碼呼叫該 MoveWebPart 方法,將控制區從一個區域移動 WebPart 到另一個區域。
該程式碼範例包含三個部分:
使用者控制功能可切換顯示模式。
一個網頁來承載控制系統。
說明如何執行程式碼範例。
程式碼範例的第一部分是使用者控制顯示模式的設定。 你可以從類別總覽的 WebPartManager 範例部分取得使用者控制的原始碼。 欲了解更多顯示模式及使用者控制機制的資訊,請參閱 「攻略:在網頁零件頁面更改顯示模式」。
範例的第二部分是一個包含兩個區域的網頁,每個區域包含兩個伺服器控制項。 當使用者點擊頁面上的 Move WebPart 按鈕時,該方法中的 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>
頁面載入後,點擊 Move WebPart 按鈕,注意包含連結的控制項會移到第二個區域的中間位置。 控制項的移動是透過呼叫 MoveWebPart 方法來程式化完成的。 你也可以使用 顯示模式 的下拉清單控制來切換頁面到設計模式,在設計模式下,你可以將控制鍵拖曳到不同區域或區域內的不同位置。 控制項也會呼叫MoveWebPart此WebPartManager方法來處理這類使用者發起的移動。
備註
控制系統 WebPartManager 會使用此 MoveWebPart 方法移動 webPart 至同一區域內的新位置,或是不同區域。 你可以直接從程式碼呼叫此方法,當使用者透過 Web Parts 使用者介面(UI)中的各種選項移動控制項到新位置時,也會被呼叫。
移動前 webPart 必須符合多項條件,其中大多數可由本主題例外部分列出的項目說明。 如果 webPart 一開始就不屬於 WebPartZoneBase 某個區域,就不能被移動到某個區域。
條件達成後,會發生以下行動序列:webPart
這個 OnWebPartMoving 方法提升了事件的水準 WebPartMoving 。
webPart從其當前區域移除(如有需要),並加入其新區域或當前區域內的新位置。這個 OnWebPartMoved 方法提升了事件的水準 WebPartMoved 。
起點區與終點區所有
zoneIndex控制點的 都會WebPart重置以反映移動的控制。