Tip:在使用AjaxControlTookit的控件时相应事件

时间:2010-03-11 11:37:01  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:厚非。但是作为一个实际开发产品的程序员,如果要灵活地使用AjaxControlTookit中的组件,则必须了解该如何在客户端操作各Behvaior对象的各个成员(属性、方法和事件等)。        在《分》文中,我举了一个操作ModalPopupBehavir对象的例子,这样显示和隐藏模态窗口的功能就局限于在服务器端ModalPopupExtender中指定的控件了。但是在这篇文章中,我想...
  正文: 在《分清ASP/ target=_blank class=infotextkey>asp.NET AJAX中的Extender和Behavior模型》一文中,我谈到了使用AjaxControlTookit中控件的关键是客户端的各Behavior组件。微软官方推出的示例都太过于重视演示效果,而忽略了实际使用中的问题——市场需要吧,要让技术看上去吸引人,这么做无可厚非。但是作为一个实际开发产品的程序员,如果要灵活地使用AjaxControlTookit中的组件,则必须了解该如何在客户端操作各Behvaior对象的各个成员(属性、方法和事件等)。
  
    在《分》文中,我举了一个操作ModalPopupBehavir对象的例子,这样显示和隐藏模态窗口的功能就局限于在服务器端ModalPopupExtender中指定的控件了。但是在这篇文章中,我想着重讲述一下在客户端操作那些组件事件的一些方法和技巧。因为,服务器端那些Extender对于客户端Behavior组件的事件支持并没有我们期望得那么良好。
  
  Extender组件对于Behavior属性的支持
    为什么AjaxControlToolkit中的控件使用起来那么方便?因为我们有了那么多的Extender。有了丰富的Extender控件,开发人员就可以在服务器端进行编程——例如设置各种属性,最终Extender会在页面中写入一些脚本用于创建客户端的Behavior对象。例如如果我们要使用ModalPopupExtender,最简单的情况下我们只需要在Extender中指定TargetControlID和PopupControlID就可以了,如下:
  
  <asp:Button ID="Button1" runat="server" Text="Button" />
  <asp:Panel ID="Panel1" runat="server" Height="50px" Width="125px">
   Hello World!
  </asp:Panel>
  
  <ajaxToolkit:ModalPopupExtender runat="server" TargetControlID="Button1" PopupControlID="Panel1" />
  
    一行多余的代码页不要写,Extender会自动在页面上引入所需的脚本文件,并生成如下的客户端代码(格式有所改变):
  
  Sys.Application.add_init(function()
  {
   $create(
   AjaxControlToolkit.ModalPopupBehavior,
   {
   "PopupControlID":"Panel1",
   "dynamicServicePath" : "/Default.aspx",
   "id":"ctl02"
   },
   null,
   null,
   $get("Button1"));
  });
  
    于是,在客户端的init阶段就会创建客户端的对象(init阶段在window.onload事件执行之后才会开始,因此如果页面上的资源需要大量时间才能完成加载的话,用户会发现Behavior的效果会很晚才出现——不过我们先不关心这个)。一般来说,页面上有多少个Extender,客户端就会出现多少个类似的语句。在$create方法的第二个参数是一个在页面上用JSON表示的对象,这是需要设置的Behavior对象的属性集合。例如在上面的例子中,ModalPopupBehavior对象的PopupControlID属性会被设置为"Panel"。
  
    有过AjaxControlToolkit中控件开发经验的朋友一定知道,会被输出到客户端作为Behavior属性的那些Extender的属性都被标记了ExtenderControlPropertyAttribute,例如在ModalPopupExtender中就有如下的成员定义:
  
  [ExtenderControlProperty]
  public string PopupControlID
  {
   get { ... }
   set { ... }
  }
  
    这样,AjaxControlToolkit中定义的基础类库就会把这个属性的值作为客户端Behavior的值,并将其输出至客户端——控件开发人员和控件使用者双方皆大欢喜。
  
  有人说:我要响应事件
    客户端的Behavior除了属性之外还有各种事件——例如CalendarBehavior的shown事件,它会在日历被打开之后触发。利用事件我们就可以在合适的时候执行特定的代码,获得丰富的功能。在服务器端标记属性然后输出至客户端早已众人皆知,那么我们可以在服务器端指定客户端的事件吗?
  
    以前不行,不过现在已经可以了。在上一个版本AjaxControlToolkit中新增了和属性差不多的支持功能。现在AjaxControlToolkit中包含了一个ExtenderControlEventAttribute类,它的作用就是在服务器端标记某个属性,使它与某个客户端的事件对应。这样我们就可以在服务器端设置客户端某个事件的响应方法,我们只需要保证那个方法存在并且逻辑正确即可。
"Tip:在使用AjaxControlTookit的控件时相应事件"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13186.html

 1/4    1 2 3 4 下一页 尾页


关键字:

关于《Tip:在使用AjaxControlTookit的控件时相应事件》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td