All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
PHP界的大事:zend已经可以破解_[PHP教程]
XML入门教程-向XML文件存储数据_[XML教程]
如何设置限制sqlserver占据内存问题_mssql学习_编程技术
“ConnectionString,属性尚未初始化”的另类解决办法_[Asp.Net教程]
基于标准的web项目开发模式探索_JavaScript技术_编程技术
下载:Visual,Studio,2008,Beta,2_[Asp.Net教程]
从.NET类库代码来看ASP.NET运行时_[Asp.Net教程]
用php实现gb2312和unicode(UTF-8)间的编码转换_php资料_编程技术
GDI+中的元文件
用ajax、asp编写的查询程序(原创)_[AJAX教程]
Reading number is top 10 pictures
A man's favorite things2
So beauty, will let you spray blood7
Green sweet joey wong young old photos exposure
Players in the eyes of a perfect love1
再来随便发几张
Sell the barbecue as says father du breul2
传奇套装
某某人向找小三的人宣战了
锄禾日了几个人?
Tie a large font of mouse
Download software ranking
Boxer's Top ten classic battle4
Unix video tutorial19
Eclipse 4.2.2 For Win32
双旗镇刀客B
Tram sex maniac 2 (H) rar bag2
Jinling thirteen stock
Unix video tutorial6
Proficient in JavaScript
Tram sex maniac 2 (H) rar bag13
Sora aoi's film--cangkong_Blue.Sky
delv published in(发表于) 2014/1/6 9:10:33 Edit(编辑)
在ASP.NET,Atlas中创建自定义Behavior_[Asp.Net教程]

在ASP.NET,Atlas中创建自定义Behavior_[Asp.Net教程]

在ASP.NET Atlas中创建自定义Behavior_[Asp.Net教程]

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>

  浏览器中的运行结果:
  没有点击:
 


  左键点击:



  右键点击:



  上述示例程序可以在此下载:http://www.cnblogs.com/Files/dflying/ExtendedClickBehaviorDemo.zip
作者:Dflying Chen 来源:博客园





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.