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)
Параметры
- 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
выполняется следующая последовательность действий:
Метод OnWebPartMoving вызывает событие WebPartMoving.
webPart
удаляется из текущей зоны (при необходимости) и добавляется в новую зону или новую позицию в текущей зоне.Метод OnWebPartMoved вызывает событие WebPartMoved.
Для
zoneIndex
каждого WebPart элемента управления в исходной и целевой зонах сбрасывается для отражения перемещенного элемента управления.