WebPartManager.MoveWebPart(WebPart, WebPartZoneBase, Int32) メソッド

定義

WebPartまたはサーバー コントロールを 1 つの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

webPartの移動先となるターゲット WebPartZoneBase

zoneIndex
Int32

zone内の他のコントロールに対するwebPartのインデックスを示す整数。

例外

webPartは、WebPartManager コントロールのControls コレクションに含まれていません。

-または-

zoneは、WebPartManager コントロールのZones コレクションに含まれていません。

-または-

webPart コントロールのZone プロパティによって参照されるゾーンはnull。つまり、webPartは現在ゾーンに含まれていません。

webPart または zonenull

zoneIndex が 0 未満です。

次のコード例では、 MoveWebPart メソッドをコードから直接呼び出して、 WebPart コントロールをあるゾーンから別のゾーンに移動する方法を示します。

このコード例には、次の 3 つの部分があります。

  • 表示モードを変更するためのユーザー コントロール。

  • コントロールをホストする Web ページ。

  • コード例を実行する方法の説明。

コード例の最初の部分は、表示モードを変更するためのユーザー コントロールです。 ユーザー コントロールのソース コードは、 WebPartManager クラスの概要の 「例」セクションから取得できます。 表示モードとユーザー コントロールの動作の詳細については、「 チュートリアル: Web パーツ ページでの表示モードの変更」を参照してください。

この例の 2 番目の部分は、2 つのゾーンを含む Web ページで、それぞれに 2 つのサーバー コントロールが含まれています。 ユーザーがページの [ WebPart の移動 ] ボタンをクリックすると、 Button1_Click メソッドのコードは、コントロールを最初のゾーンから 2 番目のゾーンの新しい位置に移動します。 list1 コントロールをラップするGenericWebPart オブジェクトを取得するには、最初にコードで GetGenericWebPart メソッドを呼び出す必要があることに注意してください。 これは、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>

ページが読み込まれたら、[ WebPart の移動 ] ボタンをクリックし、リンクを含むコントロールが 2 番目のゾーンの中央の位置に移動します。 このコントロールの移動は、 MoveWebPart メソッドを呼び出すことによってプログラムによって実現されます。 [ 表示モード ] ドロップダウン リスト コントロールを使用してページをデザイン モードに切り替えることもできます。デザイン モードでは、コントロールを異なるゾーンまたはゾーン内の異なる位置にドラッグすることもできます。 MoveWebPart メソッドは、このようなユーザーが開始した移動を処理するために、WebPartManager コントロールによっても呼び出されます。

注釈

WebPartManager コントロールでは、MoveWebPart メソッドを使用して、webPartを同じゾーン内または別のゾーン内の新しい場所に移動します。 このメソッドはコードから直接呼び出すことができます。また、Web パーツ ユーザー インターフェイス (UI) のさまざまなオプションを使用して、ユーザーがコントロールを新しい位置に移動したときにも呼び出されます。

webPartを移動する前に、いくつかの条件を満たす必要があります。そのほとんどは、このトピックの「例外」セクションに記載されている項目によって示されます。 webPartが最初にWebPartZoneBaseゾーンに含まれていない場合は、ゾーンに移動できません。

条件が満たされると、 webPart移動するために次の一連のアクションが発生します。

  1. OnWebPartMoving メソッドは、WebPartMoving イベントを発生させます。

  2. webPart は、(必要に応じて) 現在のゾーンから削除され、その新しいゾーンまたは現在のゾーン内の新しい位置に追加されます。

  3. OnWebPartMoved メソッドは、WebPartMoved イベントを発生させます。

  4. 移動されたコントロールを反映するように、配信元ゾーンと宛先ゾーンの両方のすべてのWebPart コントロールのzoneIndexがリセットされます。

適用対象

こちらもご覧ください