技术开发 频道

使用Asp.net2.0和Atlas实现拖放操作


二、编程拖放
  使用编程模型达到同样的效果只需要加一点代码。理解什么时候在自己的aspx页中加入Atlas脚本管理组件是非常重要的,在你将这个组件加入到aspx页上时,实际上就是让aspx页装载Atlas JavaScript库。Atlas库提供了扩展DOM的客户端类,并且提供了编写浏览器风格代码的工具(虽然目前仍存在一些兼容性问题)。这些客房端类还可以为HTML元素添加一些行为(如上面所提到的div标签)。

为了使用编程模型,你必须使用两个javascript函数替换XML标记。第一个函数是一段普通的JavaScript代码,它的作用是向一个HTML元素添加拖放功能。这个函数使用Atlas客户端类完成这些功能: 
 

<script type="text/javascript"> function addFloatingBehavior(ctrl, ctrlHandle){ //create new floating behavior object var floatingBehavior = new Sys.UI.FloatingBehavior(); //floating behavior class has a Handle property floatingBehavior.set_handle(ctrlHandle); //convert object reference to Atlas client control var dragItem = new Sys.UI.Control(ctrl); //get behaviors collection from Atlas control //and add our floating behavior dragItem.get_behaviors().add(floatingBehavior); //run the floating behavior's internal javascript floatingBehavior.initialize(); } </script>
这个函数有两个参数:第一个参数是被拖动的HTML元素,第二个参数是这个HTML元素的拖动句柄。接下来,你将建立一个新的Atlas客户端行为对象。拖动行为有一个“handle”属性,通过这个属性,你可以将HTML元素的句柄传递进来。然后需要基于你想拖动的控件建立一个新的客户端控件对象。将div标签放进这个Atlas客户端控件,以便为div加入拖动功能。你可以使用“get_behaviors()”方法返回一个行为集合,并且向HTML对象加入可以增加新行为的方法。最后,调用行为对象的“initialize()”方法进行初始化。这个函数在本文中将会经常使用。
现在你需要在aspx页装载时调用“addFloatingBehavior”函数。这段代码是这个例子中最核心的部分。事实上,脚本管理并没有简单的建立Atlas JavaScript库的引用,而是将库中的脚本装载到了DOM中。这就意味着这些库在每件事情都做完后,甚至在aspx页被装载后还能被装载。摆在我们面着的问题是,并没有标准的方法在JavaScript库被装载后加入拖动行为;如果我们在这些库被装载之前尝试运行它,将会产生一个没有找到所调用的方法的JavaScript错误。
实际上有很多方法调用“addFloatingBehavior”函数,但是最简单的方法就是使用一个定制的Atlas事件 — “pageLoad()”,这个事件在Atlas脚本库被装载后调用。为了给div标签加上拖动功能,在Atlas脚本被装载之后,必须写如下代码:
<script type="text/javascript"> function pageLoad(){ addFloatingBehavior(document.getElementById('draggableDiv'), document.getElementById('handleBar')); } </script>
除了使用document.getElementById()外,还可以使用Atlas脚本速记符号“$()”来代替document.getElementById()。
<script type="text/javascript"> function pageLoad(){ addFloatingBehavior($('draggableDiv'),$('handleBar')); } </script>
上面的代码同样实现了使div可拖动的功能。所产生的效果和使用声明模式完全一样。
0
相关文章