ASP.NET服务器端事件利用MARQUEE实现正在处理效果
前言:ASP.NET同仁们应该都遇到过当触发一个比较耗时的服务器端事件时,页面会处在一个等待的状态(即假死状态),用户体验非常不好,很容易造成用户二次点击,造成重复提交。至于解决方案自然是有的(问google)。这里介绍一个本人使用的一个小伎俩,如题。
1、首先看一下效果
2、介绍一下思路:弹出一个遮罩层遮住当前页面,在层上显示正在处理效果,就是这么的简单。
3、如何实现
我们知道ASP.NET服务器端控件有一个事件OnClientClick,至于该事件的用法就不多言了。说道这里,估计大家都知道是怎么回事了,没错,就是JS,使用JS创造出遮罩层及效果,然后让服务器端事件执行去吧,执行完只要一PostBack,页面从新呈现。
4、要点分析
1.如何创建遮罩层,在此不多讲,因为我用的是现成的。这里给大家推荐一款非常棒的jquery前端插件库EasyUI,真的非常优秀,大家赶紧去google吧!
2.至于“正在处理。。。”的效果,最初我是用了一个动态图片。可是不理想,因为页面假死状态下,动态图片也假死;后来就发现了marquee,虽然样式差了点,但总算可以动态了。
5、核心代码
生成效果方法
function Processing(msg) {
var sss = '<table style="border:none; border-spacing:0; border-collapse:collapse; width:100%; height:100%;">' +
'<tr><td style="text-align:center; vertical-align:middle; border:none;">' +
'<font style="color:#FF9900;">' + msg + '</font><br />' +
'<marquee style="width:150px;height:16px;border:solid 1px #95b8e7;" direction="right" scrollDelay="60">' +
'<div style="width:100px;background-color:#0000E0;height:16px;"> </div>' +
'</marquee>' +
'</td></tr></table>';
try {
if (typeof using == "undefined" || typeof using != "function") {
//alert("缺少easyloader.js引用?");
}
else {
using('window', function () {
var $Pro = $("<div id='Processing'>").attr("style", "width: 200px; height: 80px; padding: 10px;border:1px solid #95b8e7;text-align:center; vertical-align:middle;");
$Pro.append(sss);
$Pro.appendTo("form");
$Pro.window({ title: '', modal: true });
});
}
}
catch (e) { }
}
function DestroyProcessing() {
try {
using('window', function () {
$("#Processing").window("close");
$("#Processing").remove();
});
}
catch (e) { }
}
提示:不要忘了在页面引用脚本库jquery及easyloader
6、如何使用
只要在Button或LinkButton控件上加上OnClientClick ="window.setTimeout('Processing(\'数据处理中...\')', 10);"即可
注:为什么要用window.setTimeout ? 答:因为火狐浏览器。
此处求助♥:这种方式OnClientClick ="Processing(\'数据处理中...\');"下为什么火狐浏览器不触发(IE下可是好好的),而使用window.setTimeout后就可以了???
7、统一使用
统一使用即只要是可以造成表单Submit的Button都会出现此效果。
用法:使用jquery给表单的Submit事件再绑定一个方法
$().ready(function () {
$("#form1").bind("submit", function () { window.setTimeout("Processing('数据处理中...');", 10); });
});
注意:LinkButton仍需单独使用。至于为什么LinkButton不会造成表单的Submit,在此求解!
总结:其实目的就是解决在服务器响应时间过长时如何给用户以友好的提示,同时防止用户重复点击出现的重复提交。遮罩层屏蔽了表单,防止了用户重复点击,指示条向用户以示友好。再说一下marquee,在不使用ajax的情况下,页面响应期间,目前只发现只有marquee可以保持动态。最后说明,因为本人在项目中大量使用了easyui插件,所以此处使用了easyui的window插件作为弹出层,其实完全可以自己写的。
ASP.NET服务器端事件利用MARQUEE实现正在处理效果的更多相关文章
- 利用MARQUEE实现正在处理效果
ASP.NET服务器端事件利用MARQUEE实现正在处理效果 前言:ASP.NET同仁们应该都遇到过当触发一个比较耗时的服务器端事件时,页面会处在一个等待的状态(即假死状态),用户体验非常不好,很 ...
- 不使用ASP.NET服务器端控件(包括form表单不加runat="server")来触发.cs里的事件(方法),(适用于有代码洁癖者)。
很多时候,我们使用服务器端控件写出的代码,会给我们生成一些很多我们看不懂的代码(初学者),但是有时候我们并不需要这些代码(业务需求不同),对于生成的一些代码感到多余.所以我就开始想,有没有一种可能:不 ...
- ASP.NET页面事件顺序
当一个页面请求发送到WEB服务器时,不论该事件是由页面提交还是由页面重定向而激发的,页面在其被创建到释放的过程中都会运行一系列的事件.一个ASP.NET页面从悲怆见到释放的过程包含10个事件. (1) ...
- 在ASP.NET MVC3 中利用Jsonp跨域访问
在ASP.NET MVC3 中利用Jsonp跨域访问 在信息系统开发的时,根据相关业务逻辑难免会多系统之间互相登录.一般情况下我们需要在多系统之间使用多个用户名和密码.这样客户就需要在多个系统之间重复 ...
- 在TextBox中敲击回车执行ASP.NET后台事件
1.在TextBox中敲击回车执行ASP.NET后台事件 0.说明 页面中有一个用于搜索的TextBox,希望能在输入内容后直接回车开始搜索,而不是手动去点击它旁边的搜索按钮 但因为该TextBo ...
- 服务器端事件发送SSE
背景 近期有这么一个需求: 手机端需要展示一个比较大的pdf 基于手机端网络/流量/体验等考虑,希望不通过pdf下载然后展示 而是把pdf转成一张张的图片,然后再在手机上展示. 分析 pdf转图片,肯 ...
- 关于ASP.NET页面事件的知识点
ASP是动态服务器页面(ActiveServerPage)的英文缩写,是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单.方便的编程工具.那么关于ASP.NET ...
- javascript获取asp.net服务器端控件的值
代码如下: <%@ Page Language="C#" CodeFile="A.aspx.cs" Inherits="OrderManage_ ...
- ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK
看到本文的标题,相信你会忍不住进来看看! 没错,本文要讲的就是这个重量级的东西,这个不仅仅支持单表查询,更能支持连接查询, 加入一个表10W数据,另一个表也是10万数据,当你用linq建立一个连接查询 ...
随机推荐
- jQuery中的.height()、.innerHeight()和.outerHeight()
jQuery中的.height()..innerHeight()和.outerHeight()和W3C的盒模型相关的几个获取元素尺寸的方法.对应的宽度获取方法分别为.width()..innerWid ...
- oracle_job 清空冗余数据 ,每一分钟执行一次
参照这个例子:http://cherryqq.iteye.com/blog/855022 思路: data表中有4条数据 ,relation有3条数据,通过data_id 对应,需要定时删除 data ...
- css+html简单的布局demo
于html介绍css作风.可以改变html块状布局,局更加美观.接下来看一个基础布局的小样例: <html> <head> <meta http-equiv=" ...
- ArcEngine载入中SDE问题栅格数据
当直接加载矢量数据到IFeatureWorkspace接口可,但是,在装载门格当要传送的数据IRasterWorkspaceEx接口. 效果如下面的,对可以被添加到双击Globe在. watermar ...
- 使用Vs2005打造简单分页浏览器(1)原创
原文:使用Vs2005打造简单分页浏览器(1)原创 使用Vs2005打造简单分页浏览器(1)原创1引言2功能3实现过程以及关键点4总结5不足之处6其他7 代码下载 1 引言很早就有搞一个浏览器的 ...
- Struts2_2_第一Struts2应用
web.xml文件的配置与1同样. 1)HelloWorld类的代码: public class HelloWorldAction { private String message; public S ...
- POJ 2492 并查集应用的扩展
A Bug's Life Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 28651 Accepted: 9331 Descri ...
- asp.net mvc上传头像加剪裁功能
原文:asp.net mvc上传头像加剪裁功能 正好项目用到上传+剪裁功能,发上来便于以后使用. 我不能告诉你们其实是从博客园扒的前台代码,哈哈. 前端是jquery+fineuploader+jqu ...
- jQuery 表格
jQuery 表格插件汇总 本文搜集了大量 jQuery 表格插件,帮助 Web 设计者更好地驾御 HTML 表格,你可以对表格进行横向和竖向排序,设置固定表头,对表格进行搜索,对大表格进行分 ...
- POJ 3071-Football(可能性dp)
Football Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3145 Accepted: 1591 Descript ...