您的位置:首页 > 编程语言 > ASP

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

2009-09-24 11:39 218 查看
今天在博问中刚看到一个问题,是关于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='提交中..';"); 搞定!没有解决不了的,只有不会解决的!
触类旁通,如果要实现点击时出现进度条、或者显示提示框,也不难。首先增加页面控制脚本。

<script type="text/javascript">
function Wait()
{
var child=document.createElement("div");
child.id="looder";
child.style.top =300;
child.style.left = 300;
child.style.position="absolute";
child.innerHTML="<img src='../img/loadingAnimation.gif'/>";

document.body.appendChild(child);
child.focus();

}
</script>这个是动态的创建一个提示的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是必须学的。
以上纯属个人见解,有什么更好的、或者更妙的技巧,请指教。
我也一直相信 不积跬步、无以至千里!让我们从跬步开始。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐