博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ModalUpdateProgress控件
阅读量:6705 次
发布时间:2019-06-25

本文共 2285 字,大约阅读时间需要 7 分钟。

 在之前的一篇文章中,我谈了如何在页面中“轻量级地”实现了模态的UpdateProgress。这次,我带来了一个“重量级”的实现:ModalUpdateProgress控件。
   开发这样一个控件并不难,需要做的只是分析UpdateProgress在服务器端和客户端的实现方式,并且了解ScriptControl的编写方式 即可。我写的ModalUpdateProgress控件继承了ASP.NET AJAX中的UpdateProgress控件,重写的客户端Jeffz.Web.ModalUpdateProgress类也基础了客户端的 Sys.UI._UpdateProgress类。
   在这里,有技巧的实现不多,感兴趣的朋友们看了代码应该能够完全了解ModalUpdateProgress的实现方式。不过其中的某一点可能使用了一 个小技巧。由于使用了AjaxControlToolkit中的ModalPopupBehavior,客户端 Jeffz.Web.ModalUpdateProgress类也需要放出一些与ModalPopupBehvaior对应的属性。不过在这里,我是这样 写的:
Jeffz.Web.ModalUpdateProgress部分实现
Jeffz.Web.ModalUpdateProgress = function(element) {
Jeffz.Web.ModalUpdateProgress.initializeBase(this, [element]); var fakeElement = document.createElement("div"); this._modalPopupBehavior = new AjaxControlToolkit.ModalPopupBehavior(fakeElement); this._modalPopupBehavior.set_PopupControlID(this.get_element().id); } Jeffz.Web.ModalUpdateProgress.prototype = {
initialize : function() {
Jeffz.Web.ModalUpdateProgress.callBaseMethod(this, 'initialize'); this._modalPopupBehavior.initialize(); }, get_backgroundCssClass : function() {
return this._modalPopupBehavior.get_BackgroundCssClass(); }, set_backgroundCssClass : function(value) {
this._modalPopupBehavior.set_BackgroundCssClass(value); }, ... }
 
  我在这里没有使用传统的编写属性的方式,并 不是将属性的值保存在“私有变量”中。在这里,我直接将这些属性的操作委托给了ModalPopupBehavior对象,这样做同时也保证了 ModalUpdateProgress的属性与ModalPopupBehavior中属性的同步。这么做会有什么问题吗?不会的,因为使用$ create来构造一个对象时,它调用目标对象成员顺序是:
  1. 构造函数
  2. 设置属性
  3. initialize方法
  我们的控件完全能够符合这样的调用顺序。
  现在,我们只需要像使用UpdatePanel控件般使用ModalUpdatePanel就能得到模态的动画了。例如,我们可以如下使用ModalUpdatePanel控件:
CSS定义
.modalBackground {
background-color : gray; filter : alpha(opacity=70); opacity : 0.7; } #updateAnimation {
color : Black; background-color : #ffffae; font-family : Arial; font-size : 8pt; font-weight : bold; line-height : 30px; height : 30px; padding-left : 5px; padding-right : 5px; }
ModalUpdateProgress定义
Loading Working on your request...
 
  在上面的例子中我们使用了额外的BackgroundCssClass和DropShadow属性,为模态背景制定了CSS类,并且为动画元素添加了阴影。其他诸于X、Y、Drag等ModalPopupExtender的属性几乎一应俱全,使用起来非常方便。
  这个控件与“轻量级”的ModalUpdateProgress实现相比,有什么缺点呢?最大的缺点就是需要下载太多的脚本文件,孰优孰劣,可能就需要您自己判断了……
 
下载源代码(您需要自行修改它的AjaxControlTookit.dll的引用位置)。
浏览使用效果。
本文转自 jeffz 51CTO博客,原文链接:http://blog.51cto.com/jeffz/60224,如需转载请自行联系原作者
你可能感兴趣的文章
数据库镜像和日志传送配合完成高可用性以及灾难恢复
查看>>
突破单位wifi限制
查看>>
Windows Server 2016 + Exchange 2016 +Office365混合部署(四)
查看>>
windows server 2008下载及序列号
查看>>
Solaris 10源码安装编译出错的一种处理办法
查看>>
Cocos2d-x 2.x编程之CCNotificationCenter
查看>>
小计使用多线程和gevent来提高celery性能及稳定性
查看>>
ITIL好看不好吃?(五)
查看>>
【物联网智能网关-06】GPS定位+星图显示(WinForm库应用实例)
查看>>
Spark 的 Shell操作,核心概念,构建独立应用
查看>>
redis多实例重启脚本
查看>>
Lync 小技巧-16-查看Lync给谁打电话了
查看>>
在android中读取联系人信息的程序,包括读取联系人姓名、手机号码和邮箱
查看>>
Spring整合Hessian
查看>>
java中遇到过的String的一些特性
查看>>
在Django中调用exchange发送HTML邮件
查看>>
以一起数据灾难谈RAID0+1及RAID1+0
查看>>
WPF -.Net 4.0解决了DataGrid分组时的内存泄露
查看>>
看看近期读者的书评
查看>>
OSPF报头及各种报文格式详解
查看>>