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

要移动到的目标WebPartZoneBasewebPart

zoneIndex
Int32

一个整数,指示相对于其他控件的webPart索引zone

例外

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

-或-

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

-或-

控件webPartZone属性引用的区域是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控件都会重置,以反映移动的控件。

适用于

另请参阅