none
Перемещение ASP контролов RRS feed

  • Вопрос

  • Ок, но есть 2 вопроса:

    1. Возможно ли тянуть за весь элемент, а не только за его верх?

    2. Можно ли получать координаты этого элемента после того как его передвинули?

    5 июля 2012 г. 13:20

Ответы

  • "Возможно ли тянуть за весь элемент, а не только за его верх?" - можно, если назначить абсолютное позицирование TargetControl и размер его сделать равным размеру контейнера. Но, в этом случае содержимое под ним станет не доступным. "Можно ли получать координаты этого элемента после того как его передвинули?" - и это можно, используя JavaScript.

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm.aspx.cs" Inherits="DragPanel.WebForm" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
          <asp:ScriptManager ID="ScriptManager" runat="server">
      </asp:ScriptManager>
        <div class="demoarea">
            <div class="demoheading">DragPanel Demonstration</div>
            <div style="height: 300px; width: 250px; float: left; padding: 5px;" >
                <asp:Panel ID="Panel6" runat="server" Width="250px" style="z-index: 20; position: relative;">
                    <asp:Panel ID="Panel7" runat="server" Width="100%" Height="100%" style="z-index: 100; position: absolute; top:0; left: 0;"
                        BorderStyle="Solid" BorderWidth="2px" BorderColor="black">
                            <div class="dragMe">Drag Me</div>
                    </asp:Panel>
                    <asp:Panel  ID="Panel8" runat="server" Width="100%" Height="250px"
                        Style="overflow: scroll;" BackColor="#0B3D73" ForeColor="whitesmoke"
                        BorderWidth="2px" BorderColor="black" BorderStyle="Solid" >
                            <div>
                                <p>This panel will reset its position on a postback or page refresh.</p>
                                <hr />
                            </div>
                    </asp:Panel>
                </asp:Panel>
            </div>       
            <div style="clear: both;"></div>
            
            <ajaxToolkit:DragPanelExtender ID="DragPanelExtender1" runat="server"
                TargetControlID="Panel6"
                DragHandleID="Panel7" />
        </div>
        </form>
    </body>
    <script type="text/javascript">
      var panel = document.getElementById("Panel6");
      //Смещения относительно окна браузера
      alert(panel.offsetLeft + "," + panel.offsetTop);
    </script>
    </html>
    

    Можно всё это проделать используя jQuery.

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="DragPanel.WebForm2" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
      <script src="Scripts/jquery-1.7.2.js" type="text/javascript"></script>
      <script src="Scripts/jquery-ui-1.8.20.js" type="text/javascript"></script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <div id="dragMe" style="height: 200px; width:200px; background: black;"></div>
        <script type="text/javascript">
          $(document).ready(function () {
            $("#dragMe").draggable();
          });
        </script>
        </div>
        </form>
    </body>
    </html>
    

    Только в этом случае нужно знать точный Id генерируемого элемента, и чтобы другие скрипты, генерируемые автоматически ASP.NET "не мешали". Реализовать подобное иногда не получается.

    • Предложено в качестве ответа YatajgaEditor 5 июля 2012 г. 18:49
    • Помечено в качестве ответа Andrey_ua 5 июля 2012 г. 19:37
    • Помечено в качестве ответа Abolmasov DmitryModerator 6 июля 2012 г. 7:00
    5 июля 2012 г. 18:48
    Модератор