Creating a draggable panel
This draggable panel was created using Asp.Net Ajax controls. The DragPanelExtender control was used with an Asp.Net Panel controls.
(This tutorial assumes you already downloaded and installed the Asp.Net Ajax Essentials and the Asp.Net Ajax Control Toolkit which can be downloaded here.)
-
You want to make sure that one and only one ScriptManager control is on the page.
-
To create a draggable panel like the example I have you need to use 3 Asp.Net Panel controls. One Asp.Net panel control
for the "Drag Me" section, another Asp.Net panel control for the content you want to display and another Asp.Net panel control
to surround the "Drag Me" panel and the content panel.
-
Here is an example:
<asp:Panel ID="pnlDragContainer" runat="server" width="200px">
<asp:Panel ID="pnlDragSection" runat="server" style="cursor:move; background-color:#ffdd95;">
Drag Me
</asp:Panel>
<asp:Panel ID="pnlDragContent" runat="server" style="background-color:#cccccc;">
This is the content to be dragged.
</asp:Panel>
</asp:Panel>
-
After creating your drag handle, content and container you can add the DragPanelExtender control.
<ajaxToolkit:DragPanelExtender ID="DragPanelExtender1" runat="server"
DragHandleID="pnlDragSection"
TargetControlID="pnlDragContainer" />
-
The DragHandleID property is used for the "Drag Me" section of your draggable panel.
The TargetControlID property is used for the Asp.Net Panel you want to drag. In my example I set it to
container that surrounds the "Drag Me" section and the content. This way the "Drag Me" section will move
with the content.
-
Now some sites have problems when applying the DragPanelExtender control to the page. The issue some sites have is
that when the dragging is complete, the panel snaps back to its starting location. A possible solution to this problem is to
include the following JavaScript just before the closing </body> tag.
<script type="text/javascript">
function setBodyHeightToContentHeight() {
document.body.style.height = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight)+"px";
}
setBodyHeightToContentHeight();
$addHandler(window, "resize", setBodyHeightToContentHeight);
</script>
So there you have it. Easy steps to follow to create an always visible control on your site.
Chris Manciero