
在ASP.NET Atlas中创建自定义Behavior
发布时间:2006-04-14 09:48:43 来源:博客园 网友评论 0 条
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。
让我们在页面中测试一下这个ExtendedClickBehavior。在页面上添加一个<div>用来点击,一个label用来显示点击的信息。下面是ASPX文件中的HTML定义。不要忘记在ScriptManager中添加对ExtendedClickBehavior.js文件的引用。
下面是Atlas脚本定义。注意到我们使用了Atlas的setProperty Action(有关Atlas Action,请见后续文章)用来在每次点击后设置label的text。
浏览器中的运行结果:
没有点击:
左键点击:
右键点击:
上述示例程序可以在此下载:http://www.cnblogs.com/Files/dflying/ExtendedClickBehaviorDemo.zip
从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> |
浏览器中的运行结果:
没有点击:
|
|
左键点击:
![]() |
右键点击:
![]() |
上述示例程序可以在此下载:http://www.cnblogs.com/Files/dflying/ExtendedClickBehaviorDemo.zip
推荐阅讯
- ASP.NET Atlas简单控件介绍之界面控件
- ASP.NET 2.0的缓存技术简介
- ASP.NET 2.0 Web窗体语法指导
- 如何改变asp.net项目名称
- .NET正则表达式使用高级技巧之反向引用
- ASP.NET 2.0 中的母版页详解
- 在ASP.NET中实现Url Rewriting
- ASP.NET 2005 Treeview终极解决方案
- ASP.NET程序中实现校验码图像生成
- 当ASP.NET撞上JSF之应用程序的国际化
阅读排行
- 1.用ASP.NET 2.0设计网络在线投票系统
- 2.在ASP.Net 2.0中实现多语言界面的方法
- 3.轻松加密ASP.NET 2.0 Web程序配置信息
- 4.在ASP.NET中使用AJAX的简单方法
- 5..NET 2.0中的企业库异常处理块简述
- 6.面向.NET开发人员的Ajax 技术平台策略
- 7.揭开ASP.NET中Cookie编程的奥秘
- 8.ASP.NET2.0服务器控件之创建自定义控件
- 9.ASP.NET2.0中Gridview中数据操作技巧
- 10.ASP.NET 2.0发送电子邮件全面剖析之二
专题教程
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
- Picasa中文版_Picasa教程 专题:清除流氓软件
- Firefox专题 seo搜索引擎优化专区
- 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏



