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

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 邢少

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 与我联系,非常感谢。