zoukankan      html  css  js  c++  java
  • 自定义ExtenderControl实现服务器控件可拖放

        ExtenderControl是AJAX.NET框架里扩展控件的基类,比如ControlToolKit里的一些扩展控件就是从这个基类派生而来。这也是AJAX.NET框架提供给用户在客户端定义Behavior的一种方式。这种客户端的Behavior主要用于扩展服务器控件的行为,让服务器控件有更多的客户端功能,提供更好的用户体验。而这种扩展控件的方式是不改变原有服务器的行为,只是新增功能,也算是一种装饰模式。
        这里所做的Extender控件的功能是实现服务器控件在页面上可被拖放,当然这个功能在强大的AJAX.NET的预览版本里已经有了很好的实现,我这里所做的也只是简单的拖放。基本的思路是采用AJAX正式版框架里定义Behavior的方式,然后定义一些模拟拖放的事件。实现拖放的逻辑也很简单,当需要拖放的对象被点击之后,给body添加mousemove和mouseup事件,具体的移动逻辑在mousemove里实现,mouseup则清空body的事件,拖放结束。这个逻辑也是按照<<javascript高级编程>>书上介绍的方法,没有特别深奥的东西。说白了就是演练一下定义extender控件,把一些老的东西重新包装一下。除了简单的拖放逻辑,还提供了一个属性dragCssClass,就是在拖放的时候的样式,比如设置鼠标为move等等。具体代码如下
    1.首先定义个extender继承ExtenderControl,当然这个要引用AJAX.NET的System.Web.Extension.dll.要指定[TargetControlType(typeof(Control))]类型,还需要注册脚本,脚本当然也是嵌入到资源中的。基类方法的作用请看AJAX.NET提供的帮助。
    DragExtender

    2.接下来是js的脚本,也是核心逻辑的一部分
    DragBehavior.js

    最后在页面中调用就非常的简单,记得添加scriptmanager即可
    Page

    目前实现的只是简单拖动,不能像profile那样保存起来,有空再研究下。
    完整代码
  • 相关阅读:
    GIL全局解释器锁、死锁、递归锁以及event事件与信号量、线程queue
    进程通信、消费者模型和线程
    COM inerop 创建自定义互操作集 问题
    工业自动化软件产业发展的探索与实践
    为什么都是a
    Dictionary用“集合初始值设定项”进行初始化
    非“自动实现的属性”也可以用“对象初始值设定项”进行初始化
    通过接口来解开依赖
    什么叫委派
    私有可写属性
  • 原文地址:https://www.cnblogs.com/shenba/p/1218619.html
Copyright © 2011-2022 走看看