惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
月光博客
月光博客
美团技术团队
博客园 - 聂微东
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
爱范儿
爱范儿
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
I
InfoQ
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
F
Fortinet All Blogs

博客园 - 邢少

IM客户端Socks 5代理协议应用 招聘程序员的方法 CAS 与.net 集成的 “循环重定向”问题分析 .net 开发 跬步篇(6〕—绝对路径转换相对路径的 麻雀虽小,五脏俱全-C# 创建windows服务、socket通讯实例 asp.net 跬步篇(5) repeater 自定义模板实现特殊样式控件 asp.net 跬步篇(4) EnableSessionState设置 引起的框架集加载问题 控制CPU曲线引发的感想 asp.net 开发 跬步篇〔3〕.net 邮件批量发送 驱驾ViewState利剑—压缩ViewState 如何驾驭ViewState利剑 编程“方便面”之用户控件 天气数据一把抓。 .NET程序员应该知道些什么[转载] asp.net 开发 跬步篇(2) JQuery +ashx 升级之 JSon Asp .net +jquery +.ashx 文件实现分页 Gridview repeater datelist 区别 [技术思考]一段时间后的回首。 粮食的存在
asp.net 开发 跬步篇〔1〕_ajax web页面复杂处理延时、客户交...
邢少 · 2009-09-24 · via 博客园 - 邢少

2009-09-24 11:39  邢少  阅读(1009)  评论()    收藏  举报

     今天在博问中刚看到一个问题,是关于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 与我联系,非常感谢。