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是必须学的。
以上纯属个人见解,有什么更好的、或者更妙的技巧,请指教。
我也一直相信 不积跬步、无以至千里!让我们从跬步开始。
应用场景:在一个业务处理界面,有一个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是必须学的。
以上纯属个人见解,有什么更好的、或者更妙的技巧,请指教。
我也一直相信 不积跬步、无以至千里!让我们从跬步开始。
相关文章推荐
- ajax web页面复杂处理延时、客户交互问题
- Asp.net开发心得点滴[动态加载的用户控件使用事件委托,交给页面处理的事件无效问题]
- ASP.Net网站开发ajax局部刷新问题
- ASP.NET AJAX + WebService的应用和问题
- 用ASP.NET 2.0实现AJAX风格的Web开发
- asp.net学习笔记异常处理001---.framework4.0中asp.net页面ValidateRequest="false" 无效的问题
- Web Control开发随笔(1):ASP.NET 页面的生命周期
- ASP.NET Web页面(.aspx)添加用户控件(.ascx)无显示的问题
- ASP.NET AJAX RC Tip:页面中无UpdatePanel时UpdateProgress创建出错问题(转自博客园)
- FastReport ASP.Net开发Web报表时直接打印的问题
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- ASP.NET页面提前处理问题
- ASP.NET AJAX Advance Tips & Tricks (10) 解决使用AJAX Extender时的页面导出(Word/Excel)问题(Extender control 'XXX' is not a registered extender control)
- ASP.NET页面提前处理问题
- ASP.NET Web页面(.aspx)添加用户控件(.ascx)无显示的问题
- EF Database First with ASP.NET MVC: Creating the Web Application and Data Models开发遇到问题的解决办法
- 问题:web.net页面超时;结果:设置ASP.NET页面的运行超时时间详细到单个页面及站点
- AspDotNetStorefront中事件处理页面开发的注意事项
- 为解决ASP.NET MVC(CTP)中URL“页面请求”和“单纯逻辑处理请求”混淆问题,提供一条思路
- Asp.net中处理一个站点不同Web应用共享Session的问题