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

本文介绍了如何利用ASP.NET Atlas中的UpdateProgress控件为用户提供友好的等待提示,通过实例展示了如何配置UpdateProgress控件以在页面执行长时间操作时显示进度提示。

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

主要内容

1UpdateProgress控件介绍

2.完整的示例

 

一.UpdateProgress控件介绍

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

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

None.gif < atlas:UpdateProgress  ID ="uprog"  runat ="server" >
None.gif
None.gif    
< ProgressTemplate >
None.gif
None.gif        
< div  style ="background-color: #E2F2FF; color: Black; font-size:10pt; position: absolute; left: 10px;
None.gif
None.gif            top: 40px; width: 300px; height: 120px; border:solid 1px #8DD3FF"
>
None.gif
None.gif            数据更新中,请稍候dot.gif
None.gif
None.gif            
< p ></ p >
None.gif
None.gif           
&nbsp;&nbsp;&nbsp;&nbsp; < img  src ="images/loading02.gif"  alt ="Progress" />
None.gif
None.gif        
</ div >
None.gif
None.gif    
</ ProgressTemplate >
None.gif
None.gif
</ atlas:UpdateProgress >

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

二.完整的示例

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

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

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

None.gif < atlas:UpdatePanel  ID ="upanel"  runat ="server" >
None.gif
None.gif    
< ContentTemplate >
None.gif
None.gif        
< div  style ="background-color: white; position: absolute; left: 10px; top:40px;
None.gif
None.gif            width: 300px; height: 150px"
>
None.gif
None.gif            
< asp:Label  Font-Bold ="true"  Font-Size ="XX-Large"  ID ="thelabel"  runat ="server" > I will be updated </ asp:Label >
None.gif
None.gif        
</ div >
None.gif
None.gif    
</ ContentTemplate >
None.gif
None.gif    
< Triggers >
None.gif
None.gif        
< atlas:ControlEventTrigger  ControlID ="button1"  EventName ="Click"   />
None.gif
None.gif    
</ Triggers >
None.gif
None.gif
</ atlas:UpdatePanel >

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

None.gif < atlas:UpdateProgress  ID ="uprog"  runat ="server" >
None.gif
None.gif    
< ProgressTemplate >
None.gif
None.gif        
< div  style ="background-color: #E2F2FF; color: Black; font-size:10pt; position: absolute; left: 10px;
None.gif
None.gif            top: 40px; width: 300px; height: 120px; border:solid 1px #8DD3FF"
>
None.gif
None.gif            数据更新中,请稍候dot.gif
None.gif
None.gif            
< p ></ p >
None.gif
None.gif           
&nbsp;&nbsp;&nbsp;&nbsp; < img  src ="images/loading02.gif"  alt ="Progress" />
None.gif
None.gif        
</ div >
None.gif
None.gif    
</ ProgressTemplate >
None.gif
None.gif
</ atlas:UpdateProgress >

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

None.gif protected   void  button1_Click( object  sender, EventArgs e)
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
// 模拟长时间的操作
InBlock.gif

InBlock.gif    System.Threading.Thread.Sleep(
5000);
InBlock.gif
InBlock.gif
InBlock.gif    thelabel.Text 
= string.Format("I've been updated at {0}", DateTime.Now.ToLongTimeString());
InBlock.gif
ExpandedBlockEnd.gif}

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

单击“更新”按钮

更新完成后:


UpdateProgress控件使用需要的几点:

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

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

None.gif < atlas:UpdateProgress  ID ="uprog"  runat ="server" >
None.gif
None.gif    
< ProgressTemplate >
None.gif
None.gif        
< div  style ="background-color: #E2F2FF; color: Black; font-size:10pt; position: absolute; left: 10px;
None.gif
None.gif            top: 40px; width: 300px; height: 120px; border:solid 1px #8DD3FF"
>
None.gif
None.gif            数据更新中,请稍候dot.gif
None.gif
None.gif            
< p ></ p >
None.gif
None.gif           
&nbsp;&nbsp;&nbsp;&nbsp; < img  src ="images/loading02.gif"  alt ="Progress" />
None.gif
None.gif            
< asp:Button  ID ="abortButton"  runat ="server" />
None.gif
None.gif        
</ div >
None.gif
None.gif    
</ ProgressTemplate >
None.gif
None.gif
</ atlas:UpdateProgress >


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

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值