ASP.NET服务器端事件利用MARQUEE实现正在处理效果

 

前言:ASP.NET同仁们应该都遇到过当触发一个比较耗时的服务器端事件时,页面会处在一个等待的状态(即假死状态),用户体验非常不好,很容易造成用户二次点击,造成重复提交。至于解决方案自然是有的(问google)。这里介绍一个本人使用的一个小伎俩,如题。

1、首先看一下效果

2、介绍一下思路:弹出一个遮罩层遮住当前页面,在层上显示正在处理效果,就是这么的简单。

3、如何实现

我们知道ASP.NET服务器端控件有一个事件OnClientClick,至于该事件的用法就不多言了。说道这里,估计大家都知道是怎么回事了,没错,就是JS,使用JS创造出遮罩层及效果,然后让服务器端事件执行去吧,执行完只要一PostBack,页面从新呈现。

4、要点分析

1.如何创建遮罩层,在此不多讲,因为我用的是现成的。这里给大家推荐一款非常棒的jquery前端插件库EasyUI,真的非常优秀,大家赶紧去google吧!

2.至于“正在处理。。。”的效果,最初我是用了一个动态图片。可是不理想,因为页面假死状态下,动态图片也假死;后来就发现了marquee,虽然样式差了点,但总算可以动态了。

5、核心代码

生成效果方法

 1 function Processing(msg) {
2 var sss = '<table style="border:none; border-spacing:0; border-collapse:collapse; width:100%; height:100%;">' +
3 '<tr><td style="text-align:center; vertical-align:middle; border:none;">' +
4 '<font style="color:#FF9900;">' + msg + '</font><br />' +
5 '<marquee style="width:150px;height:16px;border:solid 1px #95b8e7;" direction="right" scrollDelay="60">' +
6 '<div style="width:100px;background-color:#0000E0;height:16px;">&nbsp;</div>' +
7 '</marquee>' +
8 '</td></tr></table>';
9 try {
10 if (typeof using == "undefined" || typeof using != "function") {
11 //alert("缺少easyloader.js引用?");
12 }
13 else {
14 using('window', function () {
15 var $Pro = $("<div id='Processing'>").attr("style", "width: 200px; height: 80px; padding: 10px;border:1px solid #95b8e7;text-align:center; vertical-align:middle;");
16 $Pro.append(sss);
17 $Pro.appendTo("form");
18 $Pro.window({ title: '', modal: true });
19 });
20 }
21 }
22 catch (e) { }
23 }
24 function DestroyProcessing() {
25 try {
26 using('window', function () {
27 $("#Processing").window("close");
28 $("#Processing").remove();
29 });
30 }
31 catch (e) { }
32 }

提示:不要忘了在页面引用脚本库jquery及easyloader

6、如何使用

只要在Button或LinkButton控件上加上OnClientClick ="window.setTimeout('Processing(\'数据处理中...\')', 10);"即可

注:为什么要用window.setTimeout ? 答:因为火狐浏览器。

此处求助♥:这种方式OnClientClick ="Processing(\'数据处理中...\');"下为什么火狐浏览器不触发(IE下可是好好的),而使用window.setTimeout后就可以了???

7、统一使用

统一使用即只要是可以造成表单Submit的Button都会出现此效果。

用法:使用jquery给表单的Submit事件再绑定一个方法

1  $().ready(function () {
2 $("#form1").bind("submit", function () { window.setTimeout("Processing('数据处理中...');", 10); });
3 });

注意:LinkButton仍需单独使用。至于为什么LinkButton不会造成表单的Submit,在此求解!

总结:其实目的就是解决在服务器响应时间过长时如何给用户以友好的提示,同时防止用户重复点击出现的重复提交。遮罩层屏蔽了表单,防止了用户重复点击,指示条向用户以示友好。再说一下marquee,在不使用ajax的情况下,页面响应期间,目前只发现只有marquee可以保持动态。最后说明,因为本人在项目中大量使用了easyui插件,所以此处使用了easyui的window插件作为弹出层,其实完全可以自己写的。

 
 
 
标签: ASP.NET

利用MARQUEE实现正在处理效果的更多相关文章

  1. ASP.NET服务器端事件利用MARQUEE实现正在处理效果

    前言:ASP.NET同仁们应该都遇到过当触发一个比较耗时的服务器端事件时,页面会处在一个等待的状态(即假死状态),用户体验非常不好,很容易造成用户二次点击,造成重复提交.至于解决方案自然是有的(问go ...

  2. 利用div实现遮罩层效果

    利用div实现遮罩层效果就是利用一个全屏.半透明的div遮住页面上其它元素,典型的例子就是百度的登录界面.下面贴出示例代码: <!DOCTYPE html> <html> &l ...

  3. Android利用温度传感器实现带动画效果的电子温度计

    概述 Android利用温度传感器实现带动画效果的电子温度计. 详细 代码下载:http://www.demodashi.com/demo/10631.html 一.准备工作 需要准备一部带有温度传感 ...

  4. 我的Android进阶之旅------>Android利用温度传感器实现带动画效果的电子温度计

    要想实现带动画效果的电子温度计,需要以下几个知识点: 1.温度传感器相关知识. 2.ScaleAnimation动画相关知识,来进行水印刻度的缩放效果. 3.android:layout_weight ...

  5. 利用GPU实现翻页效果(分享自知乎网)

    https://zhuanlan.zhihu.com/p/28836892?utm_source=qq&utm_medium=social 首发于Runtime 写文章 利用GPU实现翻页效果 ...

  6. 浅谈TextView Ellipsize效果与Marquee跑马灯无效果问题

    说到TextView 效果,相信大家一定熟悉跑马灯. 先来看看 Ellipsize是什么,Ellipsize 从开发技术上翻译为省略效果.故名思议,就是当文本无法显示全部时,用什么效果来显示未显示的部 ...

  7. 不借助 Javascript,利用 SVG 快速构建马赛克效果

    之前在公众号转发了好友 Vajoy 的一篇文章 -- 巧用 CSS 把图片马赛克风格化. 核心是利用了 CSS 中一个很有意思的属性 -- image-rendering,它可以用于设置图像缩放算法. ...

  8. CSS3利用text-shadow属性实现多种效果的文字样式展现

    一.效过图展示: 已经是比较久之前学习的文字效果了.但是还是很实用很有趣的.利用CSS3提供的text-shadow属性可以给页面上的文字添加阴影效果,因此可以替换掉之前使用过的一些繁琐的图片.到目前 ...

  9. 利用OpacityMask制作打洞效果

    起因 项目上存在一个连线功能,在设计的原型中,在连线中间文字上下各有15像素的空白.接手的同事觉得没思路,问我能不能在不影响连线后面的背景情况下解决该问题.我就抽了点时间给他写了个Demo.回家后趁热 ...

随机推荐

  1. 网络资源(8) - JAX-RS视频

    2014_08_25 http://v.youku.com/v_show/id_XNjAzMzA4MTY0.html JAX-RS 2.0 RESTful Java on Steroids, by A ...

  2. 什么时候rootViewController至tabbarController时刻,控制屏幕旋转法

    于ios6后,ios系统改变了屏幕旋转的方法,假设您想将屏幕旋转法,在需求rootvc里面制备,例如 UIViewController *viewCtrl = [[UIViewController a ...

  3. 浅谈JavaScript中继承的实现

    谈到js中的面向对象编程,都有一个共同点,选择原型属性还是构造函数,两者各有利弊,而就片面的从js的对象创建以及继承的实现两个方面来说,官方所推荐的是两个相结合,各尽其责,各取其长,在前面的例子中,我 ...

  4. Spring + Spring MVC + Hibernate项目开发集成(注解)

    在自己从事的项目中都是使用xml配置的方式来进行的,随着项目的越来越大,会发现配置文件会相当的庞大,这个不利于项目的进行和后期的维护.于是考虑使用注解的方式来进行项目的开发,前些日子就抽空学习了一下. ...

  5. javascript权威指南(6) - 对象

    JavaScript对象可以从一个称为原型的对象继承属性,这种"原型式继承"(prototypal inheritance)是JavaScript的核心特征.除了字符串.数字.tr ...

  6. EasyUI Combobox 默认设置

    /** *绑定运营商,默认设置, 演出CMCC, 传统的价值观念1 */ $('#operatingId').combobox({ url:'data_url', valueField:'id', t ...

  7. mysql中国的内容php网页乱码问题

    1.更改mysql编码在数据库 character_set_server=utf8 init_connect='SET NAMES utf8' 加入这两行 2.又第一次启动mysql数据库 版权声明: ...

  8. AngularJS应用开发思维之3:依赖注入

    找不到的API? AngularJS提供了一些功能的封装,但是当你试图通过全局对象angular去 访问这些功能时,却发现与以往遇到的库大不相同. $http 比如,在jQuery中,我们知道它的AP ...

  9. 随记一个C的时间加减

    //Centos6 x86_64 #include <time.h>#include <stdio.h>#include <string.h>#include &l ...

  10. Ormlite or()的使用

    如题,由于不熟悉这个框架的API,所以用的时候出错了,直接上代码 public List<Type> getAllBetweenDate(String start, String end) ...