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

Целевой элемент WebPartZoneBase, в который перемещается элемент webPart.

zoneIndex
Int32

Целое число, указывающее индекс элемента webPart относительно других элементов управления в пределах зоны zone.

Исключения

webPart не содержится в коллекции Controls элемента управления WebPartManager.

-или-

zone не содержится в коллекции Zones элемента управления WebPartManager.

-или-

Зона, на которую ссылается свойство Zone элемента управления webPart равна null. Это означает, что webPart в настоящее время не содержится в зоне.

Параметр webPart или zone имеет значение null.

Значение параметра zoneIndex меньше нуля.

Примеры

В следующем примере кода показано, как вызвать MoveWebPart метод непосредственно из кода для перемещения WebPart элемента управления из одной зоны в другую.

Пример кода состоит из трех частей:

  • Пользовательский элемент управления для изменения режимов отображения.

  • Веб-страница для размещения элементов управления.

  • Описание выполнения примера кода.

Первая часть примера кода — это пользовательский элемент управления для изменения режимов отображения. Исходный код для пользовательского элемента управления можно получить в разделе Пример в обзоре WebPartManager класса. Дополнительные сведения о режимах отображения и принципе работы пользовательского элемента управления см. в разделе Пошаговое руководство. Изменение режимов отображения на странице веб-частей.

Вторая часть примера — это веб-страница, содержащая две зоны, каждая из которых содержит два серверных элемента управления. Когда пользователь нажимает кнопку Переместить веб-часть на странице, код в методе 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>

После загрузки страницы нажмите кнопку Переместить веб-часть и обратите внимание, что элемент управления, содержащий ссылки, перемещается в среднюю позицию во второй зоне. Это перемещение элемента управления осуществляется программным способом путем вызова MoveWebPart метода . Вы также можете использовать элемент управления раскрывающимся списком Режим отображения , чтобы переключить страницу в режим конструктора, а в режиме конструктора можно перетащить элементы управления в разные зоны или в разные позиции в пределах их зон. Метод MoveWebPart также вызывается элементом управления для WebPartManager обработки таких перемещений, инициированных пользователем.

Комментарии

Элемент WebPartManager управления использует MoveWebPart метод для перемещения webPart в новое расположение в той же или другой зоне. Этот метод можно вызвать непосредственно из кода, и он также вызывается, когда пользователь перемещает элемент управления в новое положение с помощью различных параметров в пользовательском интерфейсе веб-частей.

Перед перемещением необходимо выполнить webPart ряд условий, и большинство из них указываются элементами, перечисленными в разделе Исключения этого раздела. Если webPart не содержится в WebPartZoneBase зоне, с начала, его нельзя переместить в зону.

После выполнения условий для перемещения webPartвыполняется следующая последовательность действий:

  1. Метод OnWebPartMoving вызывает событие WebPartMoving.

  2. webPart удаляется из текущей зоны (при необходимости) и добавляется в новую зону или новую позицию в текущей зоне.

  3. Метод OnWebPartMoved вызывает событие WebPartMoved.

  4. Для zoneIndex каждого WebPart элемента управления в исходной и целевой зонах сбрасывается для отражения перемещенного элемента управления.

Применяется к

См. также раздел