动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ ASP.NET技巧 ]的信息



本月文章推荐
.ASP.NET 揭秘 ASP.NET页面的结构 .
.asp.net 2.0下嵌套masterpage页的.
.用完HttpWebResponse时别忘了调用.
..NET框架下Oracle到SQL Server迁.
.在VS2003+IE7.0下调试asp.net权限.
.在asp.net页面中使用异步读取.
.ASP.NET 2.0高级数据处理之冲突检.
..NET环境下几种不同的邮件发送解.
.通过System.Web.Mail程序发邮件.
.使用 Anthem.NET 框架的一个调试.
.asp.net 2.0下一个标准GRIDVIEW功.
.安装IE补丁后ASP.NET将无法运行.
.ASP.NET访问Oracle数据库的方法.
.在ASP.NET中值得注意的两个地方.
.ASP.NET下MVC设计模式的实现.
.使用PagedDataSource类实现DataL.
..NET关于操作进程的简单示例.
.自动处理过长字符串显示的Web控件.
.获取数据行数据信息.
.用Asp.net屏蔽F5、Ctrl+N、Alt+F4.

在ASP.NET Atlas中创建自定义的Behavior

发表日期:2006-4-13 |


English Version: http://dflying.dflying.net/1/archive/120_build_your_own_behaviors_in_aspnet_atlas.html
Atlas中的Behavior定义了当控件的某个事件被触发时的行为。Behavior可以看作是一种封装了的DHTML的事件,例如click和hover等。Behavior同样可以是一个组件,可被attach到某个Atlas客户端控件上,以提供这个Atlas客户端控件更高级,更丰富的功能,例如一些复杂的拖放(drag & drop),自动完成,浮动等功能。Behavior将被定义在某个Atlas控件的behaviors集合中。

从Atlas文档以及源文件中,我们可以知道Atlas有如下一些内建的Behavior:

Click Behavior:提供对鼠标点击的处理。
Floating Behavior:提供拖放(drag & drop)的效果。
Hover Behavior:提供对DHTML的事件onmouseover,onmouseout,onfocus以及onblur的处理。
Pop-up Component:提供pop-up的功能,可以用来实现高级的tooltip。
Auto-complete Behavior:提供自动完成的功能。这也是Atlas演示中常用的功能之一。这个Behavior还需要服务器端的处理程序。
Click Behavior用来处理DHTML的onclick事件,非常有用但是它提供的功能有些简单。在一些比较复杂的程序中,我们可能需要将左右键的功能分开,例如,左键用来选择,右键用来弹出快捷菜单。虽然我们可以把这个if-else放在Click Behavior的处理函数中,但这并不是好的Atlas的方法。因此,今天我们来编写一个更加强大的Click Behavior,叫做ExtendedClickBehavior,它可以在Behavior的内部就把左右键分开,并且引发出两个不同的事件。通过编写这个ExtendedClickBehavior,您也可以了解在Atlas中创建自定义的Behavior的一般过程。

通常的,创建自定义的Behavior有如下5个步骤:

继承于Sys.UI.Behavior基类。
定义您自己的事件以封装DHTML中的事件。这些事件将被用来暴露给其他的Atlas控件以代替原有的,未经修饰的DHTML事件。
在Behavior的构造函数中为您的事件指定处理函数,并在析构函数中detach事件的处理函数。
在处理函数中发出相应的事件。在ExtendedClickBehavior的例子中,我们根据鼠标按键的不同来发出不同的事件。
在getDescriptor()方法中加上对您定义的事件的描述。
下面是ExtendedClickBehavior的JavaScript代码。上述五个步骤在代码内以注释的形式标出。将下面的代码保存为ExtendedClickBehavior.js。

Sys.UI.ExtendedClickBehavior = function() {
    Sys.UI.ExtendedClickBehavior.initializeBase(this);
   
    var _clickHandler;
   
    // step 2
    this.click = this.createEvent();
    this.leftClick = this.createEvent();
    this.rightClick = this.createEvent();
   
    this.dispose = function() {
        // step 3
        this.control.element.detachEvent('onmousedown', _clickHandler);
        Sys.UI.ExtendedClickBehavior.callBaseMethod(this, 'dispose');
    }

    this.initialize = function() {
        Sys.UI.ExtendedClickBehavior.callBaseMethod(this, 'initialize');

        // step 3
        _clickHandler = Function.createDelegate(this, clickHandler);
        this.control.element.attachEvent('onmousedown', _clickHandler);
    }
   
    this.getDescriptor = function() {
        var td = Sys.UI.ExtendedClickBehavior.callBaseMethod(this, 'getDescriptor');
       
        // step 5
        td.addEvent('click', true);
        td.addEvent('leftClick', true);
        td.addEvent('rightClick', true);
        return td;
    }
   
    // step 4
    function clickHandler() {
        this.click.invoke(this, Sys.EventArgs.Empty);
        if (window.event.button == 1)
        {
            this.leftClick.invoke(this, Sys.EventArgs.Empty);
        }
        else if (window.event.button == 2)
        {
            this.rightClick.invoke(this, Sys.EventArgs.Empty);
        }
    }
}
// step 1
Sys.UI.ExtendedClickBehavior.registerSealedClass('Sys.UI.ExtendedClickBehavior', Sys.UI.Behavior);
Sys.TypeDescriptor.addType('script', 'extendedClickBehavior', Sys.UI.ExtendedClickBehavior);
让我们在页面中测试一下这个ExtendedClickBehavior。在页面上添加一个<div>用来点击,一个label用来显示点击的信息。下面是ASPX文件中的HTML定义。不要忘记在ScriptManager中添加对ExtendedClickBehavior.js文件的引用。

<atlas:ScriptManager EnablePartialRendering="true" ID="ScriptManager1" runat="server">
    <Scripts>
        <atlas:ScriptReference Path="ExtendedClickBehavior.js" />
    </Scripts>
</atlas:ScriptManager>
<div>
    <div id="myButton" style="border: 1px solid black; width: 20em; white-space:normal">Click On Me (Left and Right)!</div> <br />
    <span id="myLabel">not clicked</span>
</div>
下面是Atlas脚本定义。注意到我们使用了Atlas的setProperty Action(有关Atlas Action,请见后续文章)用来在每次点击后设置label的text。

<page xmlns:script="http://schemas.microsoft.com/xml-script/2005">
    <components>
        <label id="myButton">
            <behaviors>
                <extendedClickBehavior>
                    <click>
                        <setProperty target="myLabel" property="text" value="clicked" />
                    </click>
                    <leftClick>
                        <setProperty target="myLabel" property="text" value="left clicked" />
                    </leftClick>
                    <rightClick>
                        <setProperty target="myLabel" property="text" value="right clicked" />
                    </rightClick>  
                </extendedClickBehavior>
            </behaviors>
        </label>
        <label id="myLabel" />
    </components>
</page>

上一篇:asp.net2.0实现主从数据表的简单方法 人气:7195
下一篇:UNIX时间戳与.net日期类的转换 人气:7541
浏览全部ASP.NET的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-23 Menalto Gallery v2.3 Rc1 多国语
2008-7-23 深度学习网址导航系统 v2.6.1
2008-7-23 因特达crm2008客户关系管理系统
2008-7-23 60度 CMS v1.0 Build 080723
2008-7-23 幻影动漫网视频系统(Ppdong) v1.
2008-7-23 好易祝福墙 2008
2008-7-23 APJE私服发布系统 v2.0 PHP版
2008-7-23 毕业论文在线指导系统源码
2008-7-23 Jacky法律在线网站源码
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵