用于ASP.NET2.0的实时WEB进度条控件

控件名称 :ProgressBar
控件类型 :ASP.NET2.0 服务器控件
  发   者 :bingdian3721@gmail.com
命名空间 :AntarDev
  名  :ProgressBar
当前版本 :0.1.1.3(2007-12-04)
 
备注 :

使用该控件,需要在Web.config文件中修改HTTP Module配置节,如下所示:

<httpModules>

<add name="AntarDevResponseModule" type="AntarDev.ProgressBarHttpModule"/>

</httpModules>
同时在使用 PageVisit 工作层次时,需要启用 Session 。本控件使用 XMLHTTP 组件在浏览器端异步请求进度条实时数据,同时由特定的 Http Module 进行快速处理,不会因为用户的高负载操作而轻易失去响应,或者阻塞。可以根据不同的使用场景对进度条进行适当调整以完成实时进度显示任务。
 
基本类型
public enum ProgressBarWorkLevel 用于声明控件的工作层次
取值
说明
Application
控件的实例用于应用程序级别,访问该进度条的用户共享一个进度条实例。
PageVisit
控件的实例用于页面访问级别,每个用户独享一个进度条的实例。
 
 
属性列表
名称
说明
默认值
AutoBegin
进度条是否自动开始
false
AutoHidden
进度条自动隐藏。当没有启动之前和完成进度之后自动隐藏,只有在走进度过程中显示。
false
BackColor
背景色
Gainsboro
BackImage
进度条背景图像(优先于背景色)
 
BeginFromZero
进度条在浏览器端初始值为0,不受设计时或者呈现之前Value值设置影响
true
BorderColor
进度条边框颜色
Gray
BorderWidth
进度条边框宽度
1px
ForeColor
前景色
RoyalBlue
ForeImage
进度条前景图像(优先于前景色)
 
FullAutoComplete
进度条走完进度后停止变动,并触发onComplete事件脚本
false
Height
高度(进度条提示文本高度不计算在内)
20px
Interval
进度条更新间隔,以毫秒为单位
1000
MaxValue
最大值
100
MinValue
最小值
0
onComplete
进度条停止变动后执行的JavaScript
 
onError[ 修订]
进度条出现错误后执行的JavaScript,服务器返回的数据格式错误,或者根据服务器返回的错误信息进行下一步处理。在脚本内部,可以通过data.StateCode和data.Message获取错误代码以及错误消息文本。
 
Text
进度条上方显示的提示文本
 
TextAlign
提示文本对齐方式
HorizontalAlign.NotSet
TextColor
提示文本的颜色
Black
Value
当前值
20
Width
宽度
400px
WorkLevel
进度条工作层次
ProgressBarWorkLevel.PageVisit
 
 
更新进度条状态数据的静态方法
名称
说明
End(string ProgressBarId,ProgressBarWorkLevel WorkLevel)
清除进度数据。当确认该进度条实例或者实例的数据已经废弃的时候,使用该方法能够立即清除进度条实例在内存中存储的数据。如果不手工清除数据,进度条控件的守护线程将按照指定的间歇清理过期数据。在对进度条生存周期不是很了解的情况下,建议让进度条自动回收而不是使用End方法手动清理过期数据。
Register(string ProgressBarId, ProgressBarWorkLevel WorkLevel)
[ 新增] 手工注册控件。如果要在控件第一次呈现之前设置进度条进度数据,就要手工注册控件。当控件已经呈现过,应用程序中存在指定的进度条的数据时,该方法不执行任何操作。
SetStatusAbso(string ProgressBarId, ProgressBarWorkLevel WorkLevel, int value)
设置进度条实时状态数据,使用绝对数值。需要控件ID和工作层次以及相对变动值value。

SetStatusAbso(string ProgressBarId, ProgressBarWorkLevel WorkLevel, int value, string text)

设置进度条实时状态数据,使用绝对数值。需要控件ID和工作层次以及相对变动值value和提示文本。
SetStatusRela(string ProgressBarId, ProgressBarWorkLevel WorkLevel)
设置进度条实时状态数据,使用相对变动值。需要控件ID和工作层次两个参数。此时进度条Value+=1。
SetStatusRela(string ProgressBarId, ProgressBarWorkLevel WorkLevel, int value)
设置进度条实时状态数据,使用相对变动值。需要控件ID和工作层次以及相对变动值value。此时进度条Value+=value。

SetStatusRela(string ProgressBarId,ProgressBarWorkLevel WorkLevel, int value, string text)

设置进度条实时状态数据,使用相对变动值。需要控件ID和工作层次以及相对变动值value和提示文本。
 
 
示例一 :
说明:本示例在进度条第一次呈现后, PostBack 之后进行进度条实时数据的更新。

新建网站,Web.config文件中修改HTTP Module配置节,如下所示:

<httpModules>

<add name="AntarDevResponseModule" type="AntarDev.ProgressBarHttpModule"/>

</httpModules>
新建 Default.aspx , 在工具栏中右键单击 ->" 选择项 " ,浏览文件,选择 ProgressBar.dll ,这样就可以在工具栏中看到进度条控件了 ( 如果已经将 ProgressBar 控件添加到工具栏 , 此步骤省略 ) 。在 Default.aspx 中加入 ProgressBar 控件, ID 设为 ProgressBar1 和一个 HTML 控件按钮, ID 设为 Button1
双击 Button1 ,编写以下 JavaScript 脚本:
function Button1_onclick() {

    document.getElementById("form1").submit();   //手动提交表单

    ProgressBar1.Begin();                                         //开始进度条刷新

}
4 .查看 Default.aspx 的代码页 Default.aspx.cs 。修改 Page_Load

    protected void Page_Load(object sender, EventArgs e)

    {
        if (IsPostBack)                                            // PostBack 之后开始更新进度条实时数据
        {
            for (int i = 0; i < 10; i++)
            {

                AntarDev.ProgressBar.SetStatusRela("ProgressBar1", AntarDev.ProgressBarWorkLevel.PageVisit);

                System.Threading.Thread.Sleep(1000);
            }
        }
    }
5 .生成网站,在浏览器中浏览查看效果。
 
 
示例二 :
说明:本示例在进度条第一次呈现前的时刻进行进度条实时数据的更新。在这种情况下有两种方法对进度条数据进行调整,一是通过进度条的 value 属性的设置对进度条进度进行更新,二是通过控件提供的静态方法对进度条进行更新。使用第一种方法时,必须和进度条创建的页面在同一个页面以内,同时因为受 Viewstate 影响,如果在 Viewstate 恢复之前设置 value 属性,在 Viewstate 恢复时,将覆盖用户先前的设置。所以建议使用静态方法对进度条控件进行更新。使用静态方法,可以不在创建进度条的页面执行对进度条的更新。

新建网站,Web.config文件中修改HTTP Module配置节,如下所示:

<httpModules>

<add name="AntarDevResponseModule" type="AntarDev.ProgressBarHttpModule"/>

</httpModules>
新建 Default.aspx , 在工具栏中右键单击 ->" 选择项 " ,浏览文件,选择 ProgressBar.dll ,这样就可以在工具栏中看到进度条控件了 ( 如果已经将 ProgressBar 控件添加到工具栏 , 此步骤省略 ) 。在 Default.aspx 中加入 ProgressBar 控件, ID 设为 ProgressBar1 和一个 HTML 控件按钮, ID 设为 Button1
设置 BeginFromZero 属性为False。
双击 Button1 ,编写以下 JavaScript 脚本:
function Button1_onclick() {

    document.getElementById("form1").submit();   //手动提交表单

    ProgressBar1.Begin();                                         //开始进度条刷新

}
4 .查看 Default.aspx 的代码页 Default.aspx.cs 。修改 Page_Load

    protected void Page_Load(object sender, EventArgs e)

{
// 清除旧数据
AntarDev.ProgressBar.End("ProgressBar1", AntarDev.ProgressBarWorkLevel.PageVisit);
 
// 注册指定的进度条控件 , 这样才能在进度条呈现之前开始设置进度条进度数据。
AntarDev.ProgressBar.Register("ProgressBar1", AntarDev.ProgressBarWorkLevel.PageVisit);
 
// 使用SetStatusRela方法设置进度条相对增加量
AntarDev.ProgressBar.SetStatusRela("ProgressBar1", AntarDev.ProgressBarWorkLevel.PageVisit, 5);
    }
5 .生成网站,在浏览器中浏览查看效果。
 
 
 
 
更新记录:
 
    :2007-12-4
版本号 :0.1.1.3
    :1. onError 属性的使用进行了修正 , 通过 onError 处理数据获取错误而不是通信错误。可以使用 data.StateCode data.Message 获取错误代码以及错误消息文本 ;
2. 增加了 Register 方法 , 可以在控件第一次呈现之前开始更新进度 ;
3. 更新控件使用示例 ;
 

    :2007-12-1
版本号:0.1.1.1
    :修正了0.1.1.0中的设计时图片呈现问题

 
 
 
关于 Web ProgressBar 参考过的文章 :

[1]Wilcob. Building an 'AJAX' ProgressBar in Atlas http://www.developerfusion.co.uk/show/5340/

说明 : 基于 Atlas 的,大体看了一下,帮助不是很大。

[2] Elvin Cheng. Real-time web-styled ProgressBar control http://www.codeproject.com/useritems/WebProgressBar.asp

       说明 : 基于 Script Callbacks Framework ,从这篇文章中吸收了 onComplete onError 事件。

 

特此声明,并致谢。

 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值