Asp.net中的进度等待画面

来源:互联网 发布:软件项目重点难点分析 编辑:程序博客网 时间:2024/06/11 11:41

在Windows窗口程序中,加一个进度条很简单,在Web项目进度条的使用却不是那个简单,Asp.net中画面Load执行完成之后,画面才能显示,所以加画面Load进度似乎最好的办法就是多线程。本文介绍的一个画面Load进度等待的方法,没有用多线程,另外加了一个进度等待画面,首先加载这个等待画面,然后在等待画面上判断真正要加载的画面是否加载完毕,没有真正实现实际意义上的进度条,只是一个等待画面,但是这样起码比弹出一个空白的加载中画面,已经非常界面友好了,而且抛砖引玉,加上百分比进度也不是很困难的事情了。

首先添加一个LoadWait.aspx画面,Html代码如下:

<%@ Page language="c#" Codebehind="LoadWait.aspx.cs" AutoEventWireup="false" Inherits="KobeDai.Report.LoadWait" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 <HEAD>
 <title>eCRMS</title>
 <script language="javascript">
 function   fun()
 {
  if(document.proccess.hid.value!=undefined)
  {
   if(document.proccess.hid.value!="")
   {
    document.location.href=document.proccess.hid.value
   }
  }
 }
  </script>
 </HEAD>
 <body onLoad="fun()" bgcolor="#fffef9">
  <div style='MARGIN-TOP:40px;MARGIN-LEFT:40px;MARGIN-RIGHT:0px'>
   <p></p>
   <p align="center">
   </p>
   <p align="center"></p>
   <p align="center"></p>
   <div style='MARGIN-TOP:-20px;MARGIN-LEFT:0px;MARGIN-RIGHT:0px' align="center" id="loading">
    <form method="post" name="proccess">
     <input id="hid" type="hidden" runat="server" NAME="hid">
     <script language="javascript">
   document.write("<br><br><br><br><table border=0 cellspacing=1 cellpadding=0 bgcolor=#000000><tr bgcolor=#ffffff><td style='font:9pt Verdana;'>")
   document.write("<img src='../pic/imgwaits.jpg' border=0>")
   document.write("</td></tr></table><br>")
   document.write("<div align=center style='font-size:10pt;font-weight: bold;color: #0000FF;'>.</div>")
     </script>
    </form>
   </div>
  </div>
  <div align="center"><FONT face="MS UI Gothic"></FONT>
   <script language="javascript">
  <!--
   if((document.proccess.hid.value!=undefined)&&(document.proccess.hid.value!=""))
   {
    if(document.layers)
     document.write('<Layer src="'+document.proccess.hid.value+'"visibility="hide"></Layer>')
    else if(document.all||document.getElementById)
     document.write('<iframe src="'+document.proccess.hid.value+'"style="visibility:hidden;"></iframe>')
    else
     location.href=document.proccess.hid.value
   }
  //-->  
   </script>
  </div>
 </body>
</HTML>
后台画面Load代码:

private void Page_Load(object sender, System.EventArgs e)
  {
   // ページを初期化するユーザー コードをここに挿入します。
   if(!this.IsPostBack)
   {
    string strUrl = this.Request.QueryString["url"].ToString();
    if(strUrl != null && !string.Empty.Equals(strUrl))
    {
      hid.Value = strUrl;
    }
   }
  }

画面调用的时候LoadWait.aspx?XXX.aspx,XXX.aspx为实际要加载的画面,LoadWait画面会检测XXX.aspx画面是否加载完毕,就实现了一个进度等待画面,进一步可以做成进度条解决方案。