技术开发 频道

Atlas实现拖放效果(上)

【IT168技术文档】

    ASP.NET Atlas提供了一个简单易用而又强大的跨浏览器的拖放功能的实现。Atlas的拖放功能实现位于AtlasUIDragDrop.js文件中,感兴趣的朋友可以学习一下它的实现,当然,这部分内容不在本文的范围之内(今后应该会有所介绍,希望我不会懒)。 

    基本上,Atlas中可拖放的UI由如下两个部分实现:

    1.可拖动的对象以及投放目标对象。可拖动的对象就是在页面中可以被鼠标移动的DOM元素(例如网上商城中的物品),而投放目标对象则是页面中可以接收可拖动对象的,作为容器的DOM元素(例如网上商城中的购物车)。Atlas允许您通过实现IDragSource接口来定义自己的可拖动对象,实现IDropTarget接口来定义自己的投放目标对象。当然您可以同时实现上述两个接口(比如,您希望用户可以在页面上自由拖动并安排购物车的位置)。

    2.一个DragDropManager对象。DragDropManager是一个全局对象,将在运行时被自动初始化(当然,您需要在ScriptManager中显示声明引用AtlasUIDragDrop脚本)。您可以使用Sys.UI.DragDropManager访问到它。它的主要功能是通过调用IDragSource以及IDropTarget接口提供的方法来启动拖放操作以及注册投放目标对象。通常情况下,您不需要考虑太多关于DragDropManager的事情。

    这样,通常情况下使用Atlas创建可拖放的UI有如下两个步骤:

    1.通过实现IDragSource接口来创建可拖动的对象,实现IDragSource接口的对象应该负责调用DragDropManager的startDragDrop()方法以开始拖动的操作(通常这个步骤应该放在处理mouse down事件中实现)。每个可拖动的对象都有自己的dataType属性,可以用来定义相同类型拖放对象。
    2.通过实现IDropTarget接口来创建投放目标对象,实现IDropTarget接口的对象应该在DragDropManager中调用registerDropTarget()注册自己。每个投放目标对象都有自己的acceptedDataTypes属性,用来指定该投放目标对象可以接受何种dataType属性的可拖动对象。

    总体上,拖放操作开始于一个可拖动对象调用DragDropManager的startDragDrop()方法,然后,DragDropManager接管了其它的操作,它将负责调用可拖动对象的IDragSource接口方法以及投放目标对象的IDropTarget接口方法来协调二者的关系,以及相应的UI变化。

    Atlas提供了一些内建的实现了IDragSource以及IDropTarget接口的Behavior(关于Behavior,请参考:在ASP.NET Atlas中创建自定义的Behavior)供我们使用。显然,下列客户端Behavior都实现了IDragSource或IDropTarget接口中的至少一个。

    1.DragDropList Behavior可以为一组控件增加拖放功能。典型应用就是使ListView控件(关于ListView,请参考:使用ASP.NET Atlas ListView控件显示列表数据)实现拖放功能。
    2.DraggableListItem Behavior可以在一个DragDropList中定义一个拖动对象。可以应用在ListView的ItemTemplate上,使列表中的每一项都可以拖动。
    3.DataSourceDropTarget Behavior用来把数据通过拖放的方式加入到DataSource控件(关于DataSource,请参考:Atlas命名空间Sys.Data下控件介绍——DataSource和XMLDataSource)中。
    4.FloatingBehavior Behavior可以使某个控件浮动在页面上,并可随意移动。

0
相关文章