WebPartManager.MoveWebPart(WebPart, WebPartZoneBase, Int32) 方法

定義

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)

參數

webPart
WebPart

正在移動的 WebPart 或其他伺服器控制項。

zone
WebPartZoneBase

webPart 正在移至的目標 WebPartZoneBase

zoneIndex
Int32

整數,表示 webPart 的索引,相對於 zone 中的其他控制項。

例外狀況

webPart 不包含在 Controls 控制項的 WebPartManager 集合中。

-或-

zone 不包含在 Zones 控制項的 WebPartManager 集合中。

-或-

webPart 控制項的 Zone 屬性所參考的區域是 null,這表示 webPart 目前不是包含在區域中。

webPartzonenull

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 方法,以處理這類使用者起始的移動。

備註

控制項 WebPartManagerMoveWebPart 使用 方法來移至 webPart 相同區域或不同區域中的新位置。 您可以直接從程式碼呼叫此方法,而且當使用者使用 Web 元件使用者介面中的各種選項將控制項移至新的位置時,也會叫用此方法 (UI) 。

必須先符合一些條件,才能 webPart 移動,而且大部分條件都是由本主題的例外狀況一節所列的專案所指出。 如果 webPart 尚未包含在 WebPartZoneBase 要開頭的區域中,則無法移至區域。

符合條件之後,會發生下列動作順序來移動 webPart

  1. OnWebPartMoving 方法會引發 WebPartMoving 事件。

  2. webPart 視需要) 從其目前區域移除 (,並新增至其目前區域內的新區域或新位置。

  3. OnWebPartMoved 方法會引發 WebPartMoved 事件。

  4. zoneIndex來源和目的地區域中每個 WebPart 控制項的 會重設,以反映移動的控制項。

適用於

另請參閱