asp.net 开发 跬步篇〔1〕_ajax web页面复杂处理延时、客户交互问题

     今天在博问中刚看到一个问题,是关于loading页面的问题,就是在按钮触发复杂处理的时候,出现延迟导致页面白屏,或者ajax UpdatePanel 中出现的页面无发应引起的重复提交问题,虽然不是什么大问题,但是还是降低了客户体验,还会引起其它的非程序bug问题。我在之前的一个项目中也碰到了这个问题,最终解决。方法很简单,只能算是一个小技巧,对正在学习.net的弟兄们还是有用的,知道的就算了,不知道的就笑纳吧。
     应用场景:在一个业务处理界面,有一个GridView 和查询条件,一个查询按钮,应用了UpdatePanel,就是将GridVIew放在了UpdatePanel中,用按钮触发局部刷洗。因为查询条件很复杂的原因,在点击查询后,大概会有1秒的的延时,其实就是在后台查询,但是应用了局部刷新,页面没有任何反应,没有整个页面回传。尤其在网速很慢或者服务器负载很大的时候,会有4、5秒的这个无反应,这时候操作人员会以为是没点击成功,会再次点击。结果是更加的慢最终报错。在提交事件中,这个现象也有。会出现重复提交的问题,导致数据不准确。
     先说重复提交的解决方法:很简单,一句话,呵呵。

1  this.btn.Attributes.Add("onclick"this.Page.ClientScript.GetPostBackEventReference(btn, "Click"+ ";this.disabled=true; this.value='提交中..';");
     搞定!没有解决不了的,只有不会解决的!
   触类旁通,如果要实现点击时出现进度条、或者显示提示框,也不难。首先增加页面控制脚本。
Code
这个是动态的创建一个提示的div,div里面你可以放任何东西,比如一句话;一张图片;
后台代码
 this.Button1.Attributes.Add("onclick"this.Page.ClientScript.GetPostBackEventReference(Button1, "Click"+ ";this.disabled=true; this.value='初始化..';Wait();");
注意代码,我在后边调用了Wait()。
看以下简单效果,

点击触发:

瞧,进度条出现了,哈哈..这样就好多了。真的好简单,但是真的很使用。如果只是在客户端实现,没有服务端的交互的话,那就更简单了,javascript结合ashx文件、web服务,肯定会千变万化,自己思考吧。
其实在web程序的很多地方都会用到进度条这个东西,许多人也觉得在webform中实现进度条或等待的提示很麻烦。但是看到这个你有没有觉得 javascript 真的对web程序很重要,有点跑题了,但是这确实我的感觉。学习asp.net web应用 javaScript是必须学的。
      以上纯属个人见解,有什么更好的、或者更妙的技巧,请指教。
      我也一直相信 不积跬步、无以至千里!让我们从跬步开始。
作者:邢少
关于作者:从业至今一直从事软件前沿的分析设计工作,对软件开发过程、项目管理有浓厚的兴趣。如有想法、建议,请多多赐教
本文版权归作者和博客园共有,欢迎转载,但未经作者同意请保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过 xingshaoxian@163.com 与我联系,非常感谢。
原文地址:https://www.cnblogs.com/xingshao/p/1573175.html