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

一个整数,指示 webPartzone 中相对于其他控件的索引。

例外

webPart 未包含在 Controls 控件的 WebPartManager 集合中。

- 或 -

zone 未包含在 Zones 控件的 WebPartManager 集合中。

- 或 -

webPart 控件的 Zone 属性所引用的区域为 null,意味着 webPart 当前未包含在任何区域中。

webPartzonenull

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

  1. OnWebPartMoving 方法引发 WebPartMoving 事件。

  2. webPart 如有必要,从其当前区域 (中删除) ,并添加到其当前区域中的新区域或新位置。

  3. OnWebPartMoved 方法引发 WebPartMoved 事件。

  4. zoneIndex将重置源区域和目标区域中每个WebPart控件的 以反映移动的控件。

适用于

另请参阅