
图5.拖放两个面板控件。
六、 使用DragPanel控件实现可选的拖放
除了使用<atlas: DragOverlayExtender>控件在Web页面上实现拖放操作之外,你还能够使用包含在Atlas Control Toolkit中的DragPanelExtender控件。基本上,这个DragPanelExtender控件非常类似于<atlas: DragOverlayExtender>控件,除了它没有内置的存储被拖动控件的位置信息的能力之外。
为了实际观察该DragPanelExtender控件的工作方式,让我们把一个新的Web表单添加到页面(Default2.aspx)中。然后,切换到该表单的code-behind,并且按如下所示修改该表单的源码:
<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>控件。
· 两个Panel控件(Panel2和Panel3)嵌入在第三个面板控件(Panel1)中。
· Panel2包含一个<div>元素,其中包含一个字符串"Drag Me"。
· Panel3中包含一幅图像-Fish.jpg(你需要把该图像添加到工程中)。
DragPanelExtender控件允许你指定哪个面板控件应该允许拖动(在此,是Panel2)以及相应的应该移动的面板控件(在此,是Panel1)。为此,把下列片断添加到页面中:
<cc1:DragPanelExtender ID="DragPanelExtender1" runat="server">
<cc1:DragPanelProperties
DragHandleID="Panel2"
TargetControlID="Panel1" />
</cc1:DragPanelExtender> |
现在,用户能够拖动Panel2,而且相应的Panel1会随之移动。现在,按F5测试应用程序。现在,通过拖动包含字符串"Drag Me"的面板,你能够移动该包含图像的面板(见图6)。

图6.使用这种DragPanelExtender控件,你的用户会更直观地意识到这一面板是可移动的。
|
七、 改变为一个拖动图标
如果你善于观察,那么你会注意到,当鼠标停在"Drag Me"面板上时,光标并没有改变成一个"移动"光标形式(它是一个具有四个方向的箭头图标)。因此,说实在的,这并算是一种良好的UI设计,因为它还没有 向用户准确表达出"这是一个可移动的面板"这一信息。为此,你需要添加一个层叠式样表(CSS)。
现在,请把一个CSS式样表添加到工程(从Solution Explorer中右击工程名,然后选择"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文件的源码视图,通过添加下面高亮加粗的元素以便链接到新添加的stylesheet:
<head runat="server">
<title>Untitled Page</title>
<link href="StyleSheet.css" rel="stylesheet" type="text/css" />
</head> |
为确保鼠标在"Drag Me"面板上移动,请按如下所示设置<div>元素的class属性:
<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.把光标改为"移动"型以便用户从可移动的面板获得更直观的视觉效果。
|
八、小结
通过本文,你了解了如何使用Atlas在你的Web页面上轻松地实现拖放功能。除了能够扩展Panel控件之外,<atlas: DragOverlayExtender>控件还能够用于扩展其它Web服务器控件。作为选择,你还能够从Atlas Control Toolkit中使用DragPanelExtender控件,从而使Panel控件可以移动。最后,你学习了如何把一个可移动控件的缺省光标改变为"移 动"光标,以便向用户传达更具可视化的效果。