在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画面是否加载完毕,就实现了一个进度等待画面,进一步可以做成进度条解决方案。