介绍:
这篇文章中我将会给大家介绍如何创建一个自定义的页面更新时显示的进度条,它的属性如下:
a. 当点击一个按钮时,整个页面将无法操作。
b. 精度条会显示出来。
c. 进度条上有个取消的按钮能够操作。
d. 能够在页面上每个UpdatePanel中有一个这种进度条显示。
e. 你可以把这个进度条当做UpdatePanel或者是自定义的AJAX请求。
如果你想要理解这篇文章,首先你需要知道什么是asp.net ajax的UpdatePanel控件和什么是UpdateProgress控件。
让我们通过下面这个截图来找出答案:
如你所看到的,这里有个黄色的弹出框在页面中间。页面的其他部分被阴影覆盖,页面上的那个button不能点击。
这篇文章将分为两部分,一部分为理论,一部分为例子。如果你对理论没兴趣那么你可以直接跳过第一部分。
理论部分:
假设你处于这种境况: 你的页面中有一个UpdatePanel控件,当这个UpdatePanel更新的时候你想要显示一个进度条,这个更新时通过一个不可见的HTTP请求来实现,也就是说AJAX方法。这里有一点我们得注意,页面不会给出任何反馈当向服务器发送异步请求时。所以我们可以通过一个progeress bar来让用户知道他的请求正在进行。
首先你需要知道两方面的信息:
a. 请求开始的时间
b. 请求结束的时间
使用微软的AJAX JavaScript库很容易实现这个,它里面有个对象叫做’PageRequestManager’,使用它可以注册事件。下面给出如何实例化这个对象的javascript:
然后是注册事件:
下一步要做的是,如何来打断更新。幸运的是PageRequestManager也有这个功能。实现代码如下:
接下来我们需要做的是让页面的其它控件失去作用。这里有个ajaxcontroltool的控件ModalPopupExtender可以实现这个功能。下面这个图显示了ModalPopupExtender的Layout:
例子:
这部分是第二部分,以实例说明。
通过前面的理论我们可以创建一个更新进度条的控件。 它是个很简单的设计,包括3个div控件。第一个div显示信息,第二个div是进度条的显示,第三个div是取消按钮。
我们在asp.net页面的init部分设计这个进度条。
代码如下:
然后是客户端的代码。因为我们能够直接扩展MS的AJAX Javascript库,我们这里创建一个类。
首先 注册命名空间:
上面这几个参数都可以设置
下一步是注册事件:
从前面的代码可以看出来我们现在需要定义一个show和hide方法。
下一步是定义Abort方法和它的属性;
最后我们需要创建一个Progress类的javascript实例。必须在定义完后实例化。代码:
我提供的代码中有css样式文件。
最后介绍两个方法来使用这个控件。
1. 在UpdatePanel中使用:
假设现在你在使用一个UpdatePanel在页面中。 你通过以下几步来使用UpdateProgress控件:
a. 引用DotNetSources.Web.UI.dll。
b. 添加一个css样式链接;
c. 在web.config文件的pages/controls节点处添加
d. 在你的页面中定义这个控件:
2. 在一个web service的调用中使用这个控件。
在完成了上面那个例子的几步后,如果你说是调用个web service,那么你要添加下面两个条件:
a. 当调用web Service的时候,添加如下代码: global_progress.Show()
b. 当web service返回信息时,添加如下代码: global_progress.Hide().
下面是个例子代码:
需要代码的请留下email。