SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Microsoft AJAX Libraryでドラッグ&ドロップ対応のWebページを作成する

Atlasによるドラップ&ドロップ可能なパネルの実装

DragPanelExtenderコントロールを使ったドラッグ&ドロップ

 Webページのドラッグ&ドロップ操作には、<atlas:DragOverlayExtender>コントロールを使う方法以外に、Atlas Control Toolkitに付属のDragPanelExtenderコントロールを使う方法もあります。DragPanelExtenderコントロールは基本的には<atlas:DragOverlayExtender>コントロールとよく似ていますが、ドラッグされたコントロールの位置情報を保持する機能が組み込まれていない点が異なります。

 DragPanelExtenderコントロールの動作を見るために、ページ(Default2.aspx)に新しいWebフォームを追加します。このフォームの分離コードに切り替え、以下のコードを記述します。

<atlas:ScriptManager ID="ScriptManager1" runat="server">
</atlas:ScriptManager>

<asp:Panel ID="Panel1" runat="server" Width="125px"
           BorderStyle="Double">
    <asp:Panel ID="Panel2" runat="server" Height="1px"
               Width="100%" BorderStyle="Double"
               BackColor="White">
        <div style="text-align: center">Drag Me</div>
    </asp:Panel>
    <center>
        <asp:Panel ID="Panel3" runat="server"
                   Height="50px" Width="125px">
            <asp:Image ID="Image1" runat="server"
                       Height="318px" Width="475px"
                       ImageUrl="~/Fish.jpg" />
        </asp:Panel>
    </center>
</asp:Panel>

 このコードには以下のものが含まれます。

  • <atlas:ScriptManager>コントロール
  • 1つのPanelコントロール(Panel1)内に埋め込まれた2つのPanelコントロール(Panel2とPanel3)
  • Panel2内の<div>要素(文字列「Drag Me」が含まれる)
  • Panel3内の画像「Fish.jpg」(この画像をプロジェクトに追加することが必要)

 DragPanelExtenderコントロールでは、ドラッグできるようにするPanelコントロール(この場合はPanel2)と、これに対応して移動できるようにするPanelコントロール(この場合はPanel1)を指定できます。以下のコードをページに追加してこれを指定します。

<cc1:DragPanelExtender ID="DragPanelExtender1" runat="server">
    <cc1:DragPanelProperties
       DragHandleID="Panel2"
       TargetControlID="Panel1" />
</cc1:DragPanelExtender>

 これによって、ユーザーはPanel2をドラッグできるようになり、対応するPanel1がこれと一緒に移動するようになります。これで完了です。[F5]キーを押してこのアプリケーションをテストします。文字列「Drag Me」が含まれているパネルをドラッグすると、画像が含まれているパネルも移動します(図6を参照)。

図6 DragPanelExtenderコントロールを使うと、パネルを別のパネル内に入れることで、パネルが移動可能であることをより明確にユーザーに示すことができる
図6 DragPanelExtenderコントロールを使うと、パネルを別のパネル内に入れることで、パネルが移動可能であることをより明確にユーザーに示すことができる

ドラッグアイコンへの変更

 よく見ると、「Drag Me」パネルにマウスを置いてもマウスカーソルが移動ハンドル(4方向矢印のアイコン)に変わらないことに気付くでしょう。これではパネルが移動可能であることがユーザーに伝わらず、UIデザインとして望ましくありません。マウスカーソルを変更するには、カスケードスタイルシート(CSS)を追加する必要があります。

 CSSスタイルシートをプロジェクトに追加します(ソリューションエクスプローラでプロジェクト名を右クリックしてから[Add New Item]をクリックし、[Style Sheet]をクリックします)。既定の名前「StyleSheet.css」を使用します。このスタイルシートに以下の設定を追加します。

.dragIcon {
    width:100%;
    height:21px;
    background-color:#FFF;
    text-align:center;
    cursor:move;
    font-weight:bold;
}

 「Default2.aspx」のソースビューに戻り、新しく追加したスタイルシートにリンクさせるために、以下のように要素を追加します。

<head runat="server">
    <title>Untitled Page</title>
    <link href="StyleSheet.css"
          rel="stylesheet" type="text/css" />
</head>

 「Drag Me」パネルの上にマウスが移動したときにこれを示すために、<div>要素のクラス属性を次のように設定します。

<asp:Panel ID="Panel2" runat="server" Height="1px"
           Width="100%" BorderStyle="Double"
           BackColor="White">
    <div class="dragIcon" style="text-align: center">
        Drag Me</div>
</asp:Panel>

 [F5]キーを押してこのアプリケーションをもう一度テストします。マウスを「Drag Me」パネルの上に移動すると、マウスカーソルは移動ハンドルに変わります(図7を参照)。

図7 マウスカーソルを移動ハンドルに変更して、パネルが移動可能であることを視覚的に示す
図7 マウスカーソルを移動ハンドルに変更して、パネルが移動可能であることを視覚的に示す

 この記事では、Atlasを使ってWebページにドラッグ&ドロップ機能を簡単に実装する方法を解説しました。<atlas:DragOverlayExtender>コントロールを使うと、Panelコントロールを拡張できるほか、他のWebサーバーコントロールも拡張できます。また、Atlas Control Toolkitに付属のDragPanelExtenderコントロールを使ってPanelコントロールを移動可能にする方法も紹介しました。最後に、コントロールの既定のマウスカーソルを移動ハンドルに変更して、コントロールが移動可能であることを視覚的に示す方法も説明しました。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Wei-Meng Lee(Wei-Meng Lee)

Microsoft MVP受賞者。Microsoft社の最新テクノロジー実地研修を専門とするDeveloper Learning Solutions社を創設。.NETとワイヤレステクノロジーの開発者、指導者として知られる。国際的なカンファレンスでたびたび講演し、.NET、XML、ワイヤレステクノロジーに関す...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/872 2007/01/26 00:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー