一个加载完需要至少10秒的aspx页面,从点击开始到加载完,怎么给用户提示正在加载中...?
试了放一个div,<div id="loading">正在加载中...</div>。然后用js判断加载完后,让改div不显示,根本就没效果。浏览器请求数据是吧div和其他数据缓存在一起取出来,再显示的
参考下:::
ajax方法的全局事件的用处
ajax全局事件,有个典型的应用场合:
你的页面存在多个甚至为数不少的ajax请求,但是这些ajax请求都有相同的消息机制。ajax请求开始前显示一个提示框,提示“正在读取数据“;ajax请求成功时提示框显示“数据获取成功”;ajax请求结束后隐藏提示框。
不使用全局事件的做法是:
给$.ajax()加上beforeSend、success、complete回调函数,在回调函数中加上处理提示框。
使用全局事件的做法是:
$(document).ajaxStart(onStart)
.ajaxComplete(onComplete)
.ajaxSuccess(onSuccess);
function onStart(event) {
//.....
}
function onComplete(event, xhr, settings) {
//.....
}
function onSuccess(event, xhr, settings) {
//.....
}
这个页面没有用ajax,就是传统的那种
你这个肯定不行啊,因为这10秒是后台在处理,处理完传输页面时才会使用到你创建的div.
而需要生成10秒的gridview,我估计应该上千条数据了吧,为啥不分页?
网络延迟,分了页,每页20个
Asp.net 中有一个AJAx控件,相关详细请看这个http://www.cnblogs.com/webabcd/archive/2007/05/20/753223.html
UpdateProgress
·默认,任何回发,当有延迟的时候则显示UpdateProgress里的ProgressTemplate。
·要与某UpdatePanel关联则设置 AssociatedUpdatePanelID属性。
·DynamicLayout为true则用“display:none;”隐藏;DynamicLayout为false则用 “visibility:hidden;”隐藏。
·默认情况下,例如有2个异步回发,如果第1个还没有执行完毕就执行第2个的话,则会先取消第1个异步回发。
使用AJAX吧
还可以在加载数据前将DIV输出出去。
示例代码:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("正在加载!");
Response.Flush();//输出
System.Threading.Thread.Sleep(5000);
Response.Write("正在加载!");
}
Response.Flush();
U,一个多月的问题了,不知道,解决了没有?
可用 Ajax 试试 。
代码:
1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Home.aspx.cs" Inherits="WebApplication1.Home" %> 2 <!DOCTYPE html> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head runat="server"> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 <title></title> 7 <script> 8 window.onload = DataBind(); 9 10 function DataBind() { 11 var xhr = new XMLHttpRequest; // 省略一些错误处理等代码 12 xhr.open("Get", "Data.ashx", true); 13 xhr.onreadystatechange = function () { 14 if (xhr.readyState == 4) { 15 if (xhr.status == 200) { 16 document.getElementById('data').innerHTML = xhr.responseText; // 当数据接收完毕后显示在名为 data 的 div 中 17 } 18 } 19 } 20 xhr.send(null); 21 } 22 </script> 23 <style> 24 html { 25 background-color: silver; 26 } 27 #data { 28 background-color: white; 29 margin: auto; 30 width: 300px; 31 height: 200px; 32 padding: 20px; 33 border: solid 2px black; 34 } 35 </style> 36 </head> 37 <body> 38 <form id="form1" runat="server"> 39 <div id="data"> 40 数据加载中,请稍后.... 41 <br />用动态内容替换。 42 </div> 43 </form> 44 </body> 45 </html>
1 public class Data : IHttpHandler 2 { 3 4 public void ProcessRequest(HttpContext context) 5 { 6 context.Response.ContentType = "text/plain"; 7 System.Threading.Thread.Sleep(3000); 8 context.Response.Write(HTML()); 9 } 10 11 private string HTML() 12 { 13 StringBuilder sb = new StringBuilder(); 14 15 sb.Append("<label for='txtUserName'>User Name : </label>"); 16 sb.Append("<input name='txtUserName' type='text' id='txtUserName' /><br /><br />"); 17 sb.Append("<label for='txtPassword'>Password : </label>"); 18 sb.Append("<input name='txtPassword' type='text' id='txtPassword' /><br /><br />"); 19 sb.Append("<input type='submit' value='Submit'/>"); 20 21 return sb.ToString(); 22 } 23 24 public bool IsReusable 25 { 26 get 27 { 28 return false; 29 } 30 } 31 }
only ajax