WebPartManager.MoveWebPart(WebPart, WebPartZoneBase, Int32) Metoda

Definicja

Przenosi kontrolkę WebPart serwera z jednej WebPartZoneBase strefy do innej lub do nowej pozycji w tej samej strefie.

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)

Parametry

webPart
WebPart

Przeniesiono kontrolkę WebPart serwera lub inną.

zone
WebPartZoneBase

Obiekt docelowy WebPartZoneBase , do którego webPart jest przenoszony.

zoneIndex
Int32

Liczba całkowita wskazująca indeks webPart względem innych kontrolek w obiekcie zone.

Wyjątki

webPart nie jest zawarta Controls w kolekcji kontrolki WebPartManager .

-lub-

zone nie jest zawarta Zones w kolekcji kontrolki WebPartManager .

-lub-

Strefa, webPart do której odwołuje się właściwość kontrolki Zone , to null, co oznacza, że webPart nie jest obecnie zawarta w strefie.

webPart lub zone ma wartość null.

Parametr zoneIndex ma wartość niższą niż zero.

Przykłady

W poniższym przykładzie kodu pokazano, jak wywołać metodę MoveWebPart bezpośrednio z kodu, aby przenieść kontrolkę WebPart z jednej strefy do innej.

Przykładowy kod ma trzy części:

  • Kontrolka użytkownika do zmieniania trybów wyświetlania.

  • Strona sieci Web do hostowania kontrolek.

  • Wyjaśnienie sposobu uruchamiania przykładu kodu.

Pierwszą częścią przykładu kodu jest kontrolka użytkownika do zmieniania trybów wyświetlania. Kod źródłowy kontrolki użytkownika można uzyskać w sekcji Przykład w przeglądzie WebPartManager klasy. Aby uzyskać więcej informacji na temat trybów wyświetlania i sposobu działania kontrolki użytkownika, zobacz Przewodnik: zmienianie trybów wyświetlania na stronie składników Web Part.

Druga część przykładu to strona sieci Web zawierająca dwie strefy, z których każda zawiera dwie kontrolki serwera. Gdy użytkownik kliknie przycisk Przenieś składnik Web Part na stronie, kod w Button1_Click metodzie przenosi kontrolkę z pierwszej strefy do nowej pozycji w drugiej strefie. Zwróć uwagę, że kod najpierw musi wywołać metodę GetGenericWebPart , aby pobrać GenericWebPart obiekt, który opakowuje kontrolkę list1 . Jest to wymagane, ponieważ pierwszy parametr MoveWebPart metody wymaga kontrolki WebPart , natomiast list1 jest ASP.NET kontroli serwera.

<%@ 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>

Po załadowaniu strony kliknij przycisk Przenieś składnik Web Part i zwróć uwagę, że kontrolka zawierająca linki przechodzi do pozycji środkowej w drugiej strefie. Ten ruch kontrolki jest osiągany programowo przez wywołanie MoveWebPart metody . Możesz również użyć kontrolki listy rozwijanej Tryb wyświetlania , aby przełączyć stronę do trybu projektowania, a w trybie projektowania możesz przeciągnąć kontrolki do różnych stref lub różnych pozycji w ich strefach. Metoda jest również wywoływana MoveWebPart przez kontrolkę WebPartManager do obsługi takich ruchów inicjowanych przez użytkownika.

Uwagi

Kontrolka WebPartManagerMoveWebPart używa metody , aby przejść webPart do nowej lokalizacji w tej samej strefie lub w innej strefie. Tę metodę można wywołać bezpośrednio z kodu i jest wywoływana, gdy użytkownik przenosi kontrolkę do nowej pozycji przy użyciu różnych opcji w interfejsie użytkownika składników Web Part.

Przed przeniesieniem należy spełnić webPart szereg warunków, a większość z nich jest wskazywana przez elementy wymienione w sekcji Wyjątki w tym temacie. Jeśli webPart nie został zawarty w WebPartZoneBase strefie do rozpoczęcia, nie można go przenieść do strefy.

Po spełnieniu warunków następuje przeniesienie następującej sekwencji akcji webPart:

  1. Metoda OnWebPartMoving zgłasza WebPartMoving zdarzenie.

  2. webPart jest usuwany z bieżącej strefy (w razie potrzeby) i dodany do nowej strefy lub nowej pozycji w bieżącej strefie.

  3. Metoda OnWebPartMoved zgłasza WebPartMoved zdarzenie.

  4. Każda kontrolka zoneIndexWebPart w strefach źródłowych i docelowych jest resetowany, aby odzwierciedlić przeniesioną kontrolkę.

Dotyczy

Zobacz też