Atlas学习手记(6):使用Atlas UpdateProgress控件

在页面上执行较长时间的操作时,如果能够给用户提供一个类似于浏览器状态栏那样的进度条,将会使界面用户界面更加友好。在Atlas中,为我们提供的UpdateProgress控件可以轻松的实现这些。

主要内容

1UpdateProgress控件介绍

2.完整的示例

 

一.UpdateProgress控件介绍

在页面上执行较长时间的操作时,如果能够给用户提供一个类似于浏览器状态栏那样的进度条,将会使界面用户界面更加友好。相信大家都见到过如下这样的界面:

Atlas中,为我们提供的UpdateProgress控件可以轻松的实现类似于这样的进度条,虽然它并不是反映真实的进度,却可以使我们用户界面更加友好。一个简单的UpdateProgress控件示例代码:

<atlas:UpdateProgress ID="uprog" runat="server">

    
<ProgressTemplate>

        
<div style="background-color: #E2F2FF; color: Black; font-size:10pt; position: absolute; left: 10px;

            top: 40px; width: 300px; height: 120px; border:solid 1px #8DD3FF"
>

            数据更新中,请稍候

            
<p></p>

           
&nbsp;&nbsp;&nbsp;&nbsp;<img src="images/loading02.gif" alt="Progress"/>

        
</div>

    
</ProgressTemplate>

</atlas:UpdateProgress>

UpdateProgress控件并没有什么属性需要去设置,我们唯一要做的就是设置ProgressTemplate,即进度条在页面上显示的样式,可以是图片,文本等,这一点类似于我们前面说过的ErrorTemplate

二.完整的示例

UpdateProgress控件的使用相当简单,下面看一个例子,在该示例中,我们在更新一段文本时执行长时间的操作。还是先添加ScriptManager控件:

<atlas:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server" />

在添加一个UpdatePanel,用来更新文本:

<atlas:UpdatePanel ID="upanel" runat="server">

    
<ContentTemplate>

        
<div style="background-color: white; position: absolute; left: 10px; top:40px;

            width: 300px; height: 150px"
>

            
<asp:Label Font-Bold="true" Font-Size="XX-Large" ID="thelabel" runat="server">I will be updated</asp:Label>

        
</div>

    
</ContentTemplate>

    
<Triggers>

        
<atlas:ControlEventTrigger ControlID="button1" EventName="Click" />

    
</Triggers>

</atlas:UpdatePanel>

现在添加UpdateProgress控件,设置ProgressTemplate<div>来实现:

<atlas:UpdateProgress ID="uprog" runat="server">

    
<ProgressTemplate>

        
<div style="background-color: #E2F2FF; color: Black; font-size:10pt; position: absolute; left: 10px;

            top: 40px; width: 300px; height: 120px; border:solid 1px #8DD3FF"
>

            数据更新中,请稍候

            
<p></p>

           
&nbsp;&nbsp;&nbsp;&nbsp;<img src="images/loading02.gif" alt="Progress"/>

        
</div>

    
</ProgressTemplate>

</atlas:UpdateProgress>

添加一个按钮,在它的事件中更新上面的文本:

protected void button1_Click(object sender, EventArgs e)

{
    
// 模拟长时间的操作

    System.Threading.Thread.Sleep(
5000);


    thelabel.Text 
= string.Format("I've been updated at {0}", DateTime.Now.ToLongTimeString());

}

至此整个示例就完成了,编译运行,看一下效果:

单击“更新”按钮

更新完成后:


UpdateProgress控件使用需要的几点:

1UpdateProgress控件并不是为某一个控件的处理而添加的,它是一个全局的控件,对整个页面都有效,所以在页面只能有一个且只能添加一个UpdateProgress控件。所有涉及到延时的操作都会由UpdateProgress控件来处理。

2UpdateProgress控件的Template中有一个IDabortButtonButton控件,我们可以提供一个服务器端ButtonLinkButton控件,并指定IDabortButton,以使用户可以取消当前的操作。示例代码如下:

<atlas:UpdateProgress ID="uprog" runat="server">

    
<ProgressTemplate>

        
<div style="background-color: #E2F2FF; color: Black; font-size:10pt; position: absolute; left: 10px;

            top: 40px; width: 300px; height: 120px; border:solid 1px #8DD3FF"
>

            数据更新中,请稍候

            
<p></p>

           
&nbsp;&nbsp;&nbsp;&nbsp;<img src="images/loading02.gif" alt="Progress"/>

            
<asp:Button ID="abortButton" runat="server"/>

        
</div>

    
</ProgressTemplate>

</atlas:UpdateProgress>


完整示例下载:http://files.cnblogs.com/Terrylee/UpdateProgressDemo.rar

作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2006-07-29 12:03 TerryLee 阅读(5613) 评论(46)  编辑 收藏 网摘 所属分类: [08]  Web开发[01]  .NET大本营

  回复  引用  查看    
#1楼 2006-07-29 11:23 | 隨風.NET      
辛苦了
  回复  引用  查看    
#2楼 [楼主]2006-07-29 11:36 | TerryLee      
@隨風.NET
呵呵,客气

最近刚开始学,可能写的比较快:-)
  回复  引用  查看    
#3楼 2006-07-29 11:59 | 隨風.NET      
@TerryLee
写的很好哦 我就是跟着你写的在学呢
呵呵 写的很清晰 就看就明白了 希望以后能多看到这样的文章
再说次辛苦了 :)

PS 能不能做个象XP系统关机的时候的那种的灰屏效果呢?
一直觉得很酷 但是不知道怎么去做哦? 嘿嘿
  回复  引用  查看    
#4楼 [楼主]2006-07-29 12:04 | TerryLee      
@隨風.NET

可以的

后面的Atlas Control Toolkit应该可以实现
  回复  引用  查看    
#5楼 2006-07-29 12:25 | SHY520      
您的Atlas在哪里下载的?我也想来体验一下了,呵呵
  回复  引用  查看    
#6楼 [楼主]2006-07-29 12:41 | TerryLee      
下载了一个试试,可是觉得是预览版,不敢用,怕有大的改动
  回复  引用  查看    
#8楼 [楼主]2006-07-29 14:35 | TerryLee      
@DG-10液位显示报警器

这个不好说,很难保证下一个版本会改成什么样子,呵呵:-)
  回复  引用  查看    
#9楼 2006-07-29 14:41 | neuhawk      
出了这么久的ctp.变化也不大.

  回复  引用  查看    
#10楼 [楼主]2006-07-29 14:44 | TerryLee      
@neuhawk
用Dflying的话说,还不知道Atlas的命运如何呢,呵呵

变化不大,对我们使用者来说是好事啊
  回复  引用  查看    
#11楼 2006-07-29 19:42 | 阿一      
页面加载时能调用吗?
<Triggers>

<atlas:ControlEventTrigger ControlID="button1" EventName="Click" />

</Triggers>
你这里是点击按钮时才调用!
  回复  引用    
#12楼 2006-07-29 21:40 | neuhawk1 [未注册用户]
楼主,打算学.net framework 3.0了吗
  回复  引用    
#13楼 2006-07-29 22:46 | 随风.Net [未注册用户]
@TerryLee

支持楼主哦

期待用Atlas Control Toolkit实现灰屏效果

  回复  引用    
#14楼 2006-07-29 23:35 | wqxh [未注册用户]
@隨風.NET

这个直接在<ProgressTemplate>中的层中使用CSS滤镜处理就可以实现了啊。如果在style中写:filter : progid:DXImageTransform.Microsoft.Alpha(opacity=50);

当然大小要重新处理一下才能覆盖全屏。

@TerryLee
一直有关注你的博客,真的写得很好。

  回复  引用  查看    
#15楼 [楼主]2006-07-30 10:20 | TerryLee      
@阿一
看后面的一段话:
================================
UpdateProgress控件并不是为某一个控件的处理而添加的,它是一个全局的控件,对整个页面都有效,所以在页面只能有一个且只能添加一个UpdateProgress控件。所有涉及到延时的操作都会由UpdateProgress控件来处理。

这里点击按钮只是为了模拟出一个长时间的操作而已,页面加载时也可以的。
  回复  引用  查看    
#16楼 [楼主]2006-07-30 10:21 | TerryLee      
@wqxh

谢谢支持:-)
  回复  引用  查看    
#17楼 [楼主]2006-07-30 10:21 | TerryLee      
@neuhawk1

现在还没有,不知道你这么问什么意思?
  回复  引用  查看    
#18楼 2006-07-31 09:11 | 阿一      
哦,明白!
谢谢!楼主!
  回复  引用  查看    
#19楼 [楼主]2006-07-31 09:38 | TerryLee      
@阿一
呵呵,不客气:-)
  回复  引用    
#20楼 2006-08-02 10:06 | stvb168 [未注册用户]
向楼主学习,写的很详细!
  回复  引用    
#21楼 2006-08-08 16:51 | jeanso [未注册用户]
页面加载时具体怎么用啊??????
  回复  引用    
#22楼 2006-08-09 21:25 | 锦瑟 [未注册用户]
1.如果页面上有很多按钮,只有一个希望有模拟进度条,而其他全都不需要,该如何处理?


2.如果button和label不使用updatepanel处理,都是普通的服务器端控件,页面上只有一个update progress,还会生效吗?

  回复  引用  查看    
#23楼 [楼主]2006-08-10 08:02 | TerryLee      
@锦瑟
这两个问题都没有做过试验,可以自行去试一下:-)
  回复  引用    
#24楼 2006-08-16 01:34 | 孤叶 [未注册用户]
中国就少你这种人,学习中。。。
非常感谢!!

  回复  引用  查看    
#25楼 [楼主]2006-08-16 08:21 | TerryLee      
@孤叶
谢谢支持,呵呵:-)
  回复  引用    
#26楼 2006-08-31 12:38 | 刘军海 [未注册用户]
我连续一下子从第一篇看到了这儿,在看到这个后,想请教你一个问题,就是在做updateprogress时,如何让它出现时不会占用空间,即让它在其它内容之上,别让它把其它内容向下挤,谢谢
  回复  引用  查看    
#27楼 [楼主]2006-08-31 12:52 | TerryLee      
@刘军海
你试试在<ProgressTemplate>中用CSS来定位,看行不行
  回复  引用    
#28楼 2006-09-01 20:31 | james.dong[匿名] [未注册用户]
我在使用这个updateprogress控件时,遇到这种现象:
比如一个页面有好几个局部更新的地方,这样页面有一点点的延时就会显示出来,而且很快的消失,结果,变成了闪屏现象。
  回复  引用    
#29楼 2006-09-07 23:05 | chuanzai [未注册用户]
这个……
确实太鸡叻

  回复  引用  查看    
#30楼 [楼主]2006-09-08 08:26 | TerryLee      
@chuanzai
有时候还是有用的:-)
  回复  引用  查看    
#31楼 2006-09-09 22:53 | 行与思      
@TerryLee
学会了,感谢TerryLee
  回复  引用  查看    
#32楼 2006-09-12 15:11 | 都市玩      
UpdateProgress控件的Template中有一个ID为abortButton的Button控件,我们可以提供一个服务器端Button或LinkButton控件,并指定ID为abortButton,以使用户可以取消当前的操作。

如果点击取消的 <asp:Button ID="abortButton" runat="server"/>
整个页面也会刷屏哟???

  回复  引用    
#33楼 2006-10-07 15:53 | 海东青[匿名] [未注册用户]
非常好

快爱上你了,你要是女的我一定娶了你:)
  回复  引用  查看    
#34楼 [楼主]2006-10-07 16:01 | TerryLee      
@海东青[匿名]
小心我女朋友会吃醋,呵呵^_^
  回复  引用    
#35楼 2006-10-14 21:10 | 爱上Atlas [未注册用户]
好文!
非常感谢!
  回复  引用  查看    
#36楼 [楼主]2006-10-16 21:19 | TerryLee      
@爱上Atlas
客气
  回复  引用    
#37楼 2007-01-17 00:40 | snyod [未注册用户]
代表党(.NET平台)感谢您.
全部收藏.....................

中国最好的.NET平台学习网
  回复  引用    
#38楼 2007-02-07 03:31 | baiwei [未注册用户]
ASP.NET AJAX 1.0 正式版中这个控件是不是没有了?
代替它的新控件是什么呢?谢谢
  回复  引用  查看    
#39楼 2007-02-07 03:37 | baiwei1977      
ASP.NET AJAX 1.0 正式版中这个控件是不是没有了?
代替它的新控件是什么呢?谢谢
  回复  引用  查看    
#40楼 [楼主]2007-02-07 16:56 | TerryLee      
@baiwei
正式版中有啊,放在了ASP.NET AJAX 核心包中,安装后工具箱中就有了:)
  回复  引用  查看    
#41楼 2007-02-07 17:14 | baiwei1977      
原来系统有问题了,找到了。谢谢

  回复  引用  查看    
#42楼 [楼主]2007-02-08 08:20 | TerryLee      
@baiwei1977
不客气:)
  回复  引用    
#43楼 2007-02-12 11:24 | abc [未注册用户]
老大~ 怎么样在按钮按了之后 UpdateProgress 显示的死后禁用更新按钮呢?等按扭事件处理完毕之后再启更新按钮??这个能自动吗??还是要自己写客户端脚本?
  回复  引用    
#44楼 2007-02-12 18:35 | 会心 [未注册用户]
一直有关注楼主的博客。我是是新入门的。想问楼主一个问题。
  回复  引用    
#45楼 2007-02-12 18:37 | 会心 [未注册用户]
对于Atlas UpdateProgress控件,有没有办法让它固定显示在当前页面的左下方?
  回复  引用    
#46楼 2007-02-12 18:39 | 会心 [未注册用户]
因为页面太长的时候,即使Atlas UpdateProgress控件显示出来,但也无法看到。





标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-08-15 08:06 编辑过
Google站内搜索

相关文章:

相关链接: