Condividi tramite


WebPartManager.MoveWebPart(WebPart, WebPartZoneBase, Int32) Metodo

Definizione

Sposta un controllo WebPart o un controllo server da un'area WebPartZoneBase a un'altra o in una nuova posizione all'interno della stessa area.

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)

Parametri

webPart
WebPart

Oggetto WebPart o altro controllo server di cui viene eseguito lo spostamento.

zone
WebPartZoneBase

Zona WebPartZoneBase di destinazione per lo spostamento di webPart.

zoneIndex
Int32

Integer che indica l'indice del parametro webPart relativo ad altri controlli all'interno del parametro zone.

Eccezioni

webPart non è contenuto nell'insieme Controls del controllo WebPartManager.

-oppure-

zone non è contenuto nell'insieme Zones del controllo WebPartManager.

-oppure-

L'area a cui fa riferimento la proprietà Zone del controllo webPart è null, che indica che webPart non è attualmente contenuto in un'area.

webPart o zone è null.

zoneIndex è minore di zero.

Esempio

Nell'esempio di codice seguente viene illustrato come chiamare il MoveWebPart metodo direttamente dal codice per spostare un WebPart controllo da una zona a un'altra.

L'esempio di codice include tre parti:

  • Controllo utente per la modifica delle modalità di visualizzazione.

  • Pagina Web in cui ospitare i controlli.

  • Spiegazione di come eseguire l'esempio di codice.

La prima parte dell'esempio di codice è il controllo utente per modificare le modalità di visualizzazione. È possibile ottenere il codice sorgente per il controllo utente dalla sezione Esempio della panoramica della WebPartManager classe. Per altre informazioni sulle modalità di visualizzazione e sul funzionamento del controllo utente, vedere Procedura dettagliata: Modifica delle modalità di visualizzazione in una pagina web part.

La seconda parte dell'esempio è una pagina Web che contiene due zone, ognuna delle quali contiene due controlli server. Quando un utente fa clic sul pulsante Sposta WebPart nella pagina, il Button1_Click codice nel metodo sposta un controllo dalla prima zona a una nuova posizione nella seconda zona. Si noti che il codice deve prima chiamare il GetGenericWebPart metodo per recuperare l'oggetto GenericWebPart che esegue il wrapping del list1 controllo. Questa operazione è necessaria perché il primo parametro del MoveWebPart metodo richiede un WebPart controllo , mentre list1 è un controllo ASP.NET server.

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

Dopo il caricamento della pagina, fare clic sul pulsante Sposta webpart e notare che il controllo che contiene i collegamenti si sposta nella posizione centrale nella seconda zona. Questo spostamento del controllo viene eseguito a livello di codice chiamando il MoveWebPart metodo . Puoi anche usare il controllo elenco a discesa Modalità di visualizzazione per passare alla modalità progettazione della pagina e in modalità progettazione puoi trascinare i controlli in zone diverse o posizioni diverse all'interno delle rispettive zone. Il MoveWebPart metodo viene chiamato anche dal controllo per gestire tali spostamenti avviati dall'utente WebPartManager .

Commenti

Il WebPartManager controllo usa il MoveWebPart metodo per passare webPart a una nuova posizione nella stessa zona o in una zona diversa. È possibile chiamare questo metodo direttamente dal codice e viene richiamato anche quando un utente sposta un controllo in una nuova posizione usando varie opzioni nell'interfaccia utente delle web part.

È necessario soddisfare alcune condizioni prima webPart di poter essere spostate e la maggior parte di queste è indicata dagli elementi elencati nella sezione Eccezioni di questo argomento. Se webPart non è contenuto in una WebPartZoneBase zona da cui iniziare, non può essere spostato in una zona.

Dopo che le condizioni sono state soddisfatte, si verifica la sequenza di azioni seguente per spostare webPart:

  1. Il metodo OnWebPartMoving genera l'evento WebPartMoving.

  2. webPart viene rimosso dalla zona corrente (se necessario) e aggiunto alla nuova zona o alla nuova posizione all'interno della zona corrente.

  3. Il metodo OnWebPartMoved genera l'evento WebPartMoved.

  4. L'oggetto zoneIndex di ogni WebPart controllo nelle zone di origine e di destinazione viene reimpostato in modo da riflettere il controllo spostato.

Si applica a

Vedi anche