Csdn里就没人会做asp.net1.1的上传进度条吗????
查了很多资料..很多文章..就是没查到相应的解决方案.
找到唯一一个有源码的还是asp.net2.0的..郁闷之极.
不知..Csdn上有没有人会做这个东东..或是有解决例子..
诚恳请教...
问题点数:50、回复次数:25Top
1 楼longli67(yaomv)回复于 2006-04-24 13:49:22 得分 0
帮你dingTop
2 楼luojianfeng(原来我不傻!)回复于 2006-04-24 13:53:33 得分 0
对于加载时间比较长的ASP.NET页面,我们可以在客户端浏览器中显示进度条来显示页面正在装载。下面就是具体的实现过程:
新建项目,名字为WebPortal,在项目类型中选择Visual C#项目或者Visual Basic项目都可;
在模板类型中选择ASP.NET Web应用程序;
位置里输入:http://localhost/WebPortal;
添加新项:名字为ShowProgress的Web窗体。
在您的Web窗体ShowProgress.aspx上添加任何其他的Web服务器控件。
在ShowProgress.aspx上单击右键,点“查看代码”,在最上面输入:
Visual C# .NET代码
using System.Threading;
Visual Basic .NET代码
Imports System.Threading
在Page_Load事件里输入: Visual C# .NET代码
Response.Write("<div id='mydiv' >");
Response.Write("_");
Response.Write("</div>");
Response.Write("<script>mydiv.innerText = '';</script>");
Response.Write("<script language=javascript>;");
Response.Write("var dots = 0;var dotmax = 10;function ShowWait()");
Response.Write("{var output; output = '正在装载页面';dots++;if(dots>=dotmax)dots=1;");
Response.Write("for(var x = 0;x < dots;x++){output += '·';}mydiv.innerText = output;}");
Response.Write("function StartShowWait(){mydiv.style.visibility = 'visible'; ");
Response.Write("window.setInterval('ShowWait()',1000);}");
Response.Write("function HideWait(){mydiv.style.visibility = 'hidden';");
Response.Write("window.clearInterval();}");
Response.Write("StartShowWait();</script>");
Response.Flush();
Thread.Sleep(10000);
Visual Basic .NET代码
Response.Write("<div id='mydiv' >")
Response.Write("_")
Response.Write("</div>")
Response.Write("<script>mydiv.innerText = '';</script>")
Response.Write("<script language=javascript>;")
Response.Write("var dots = 0;var dotmax = 10;function ShowWait()")
Response.Write("{var output; output = '正在装载页面';dots++;if(dots>=dotmax)dots=1;")
Response.Write("for(var x = 0;x < dots;x++){output += '·';}mydiv.innerText = output;}")
Response.Write("function StartShowWait(){mydiv.style.visibility = 'visible'; ")
Response.Write("window.setInterval('ShowWait()',1000);}")
Response.Write("function HideWait(){mydiv.style.visibility='hidden';")
Response.Write("window.clearInterval();}")
Response.Write("StartShowWait();</script>")
Response.Flush()
Thread.Sleep(10000)
在ShowProgress.aspx窗体的html的中输入:
<script>
HideWait();
</script>
点在浏览器中查看即可。Top
3 楼luojianfeng(原来我不傻!)回复于 2006-04-24 13:54:14 得分 0
第一步:
第一步让我们来建立一个进度条页面,我们使用progressbar.aspx。如上所述,我们逐步生成并发送页面到客户端。首先,我们将使用HTML生成一个完美并且漂亮的进度条。所需要的HTML代码我们可以从事先定义的progressbar.htm中获取,所以,第一件事情是装载它并且将数据流发送到客户端的浏览器,在progressbar.aspx的Page_Load中加入如下几行:
string strFileName = Path.Combine( Server.MapPath("./include"), "progressbar.htm" );
StreamReader sr = new StreamReader( strFileName, System.Text.Encoding.Default );
string strHtml = sr.ReadToEnd();
Response.Write( strHtml );
sr.Close();
Response.Flush();
以下是progressbar.htm的HTML代码,(译注:作者把脚本函数放在了另外一个js文件中,但我嫌麻烦就也放在了这个静态页面中了)
<script language="javascript">
function setPgb(pgbID, pgbValue)
{
if ( pgbValue <= 100 )
{
if (lblObj = document.getElementById(pgbID+'_label'))
{
lblObj.innerHTML = pgbValue + '%'; // change the label value
}
if ( pgbObj = document.getElementById(pgbID) )
{
var divChild = pgbObj.children[0];
pgbObj.children[0].style.width = pgbValue + "%";
}
window.status = "数据读取" + pgbValue + "%,请稍候...";
}
if ( pgbValue == 100 )
window.status = "数据读取已经完成";
}
</script>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style/common.css" />
</head>
<body bgColor="buttonface" topmargin="0" leftmargin="0">
<table width="100%" height="100%" ID="Table1">
<tr>
<td align="center" valign="middle">
<DIV class="bi-loading-status" id="proBar" style="DISPLAY: ; LEFT: 425px; TOP: 278px">
<DIV class="text" id="pgbMain_label" align="left"></DIV>
<DIV class="progress-bar" id="pgbMain" align="left">
<DIV STYLE="WIDTH:10%"></DIV>
</DIV>
</DIV>
</td>
</tr>
</table>
</body>
</html>
对应的CSS定义如下:
.bi-loading-status {
/*position: absolute;*/
width: 150px;
padding: 1px;
overflow: hidden;
}
.bi-loading-status .text {
white-space: nowrap;
overflow: hidden;
width: 100%;
text-overflow: ellipsis;
padding: 1px;
}
.bi-loading-status .progress-bar {
border: 1px solid ThreeDShadow;
background: window;
height: 10px;
width: 100%;
padding: 1px;
overflow: hidden;
}
.bi-loading-status .progress-bar div {
background: Highlight;
overflow: hidden;
height: 100%;
filter: Alpha(Opacity=0, FinishOpacity=100, Style=1, StartX=0, StartY=0, FinishX=100, FinishY=0);
}
第二步:
现在我们可以开始更新进度条了,这是十分重要的部分,因为这部分可以令你的进度条活起来。(译注,原来是使用随机的增加15次直到加载完毕,本文仅使用从1-100的匀速增加,以下内容非译)
首先我们新开一个线程,在Page_Load 中加入以下代码:
Thread thread = new Thread( new ThreadStart(ThreadProc) );
thread.Start();
thread.Join();
在类中增加以下函数:
private void ThreadProc()
{
string strScript = "<script>setPgb('pgbMain','{0}');</script>";
for ( int i = 0; i <= 100; i++ )
{
System.Threading.Thread.Sleep(10);
Response.Write( string.Format( strScript, i ) );
Response.Flush();
}
}
注意,在以上代码中我们使用for循环,在i每增加一次的情况下往客户端发送一段脚本<script>setPgb('pgbMain','{0}');</script>,其中的{0}会被相应的i替换,而该段脚本会调用预先写好的javascript函数setPgb,更改页面的进度条状态。Top
4 楼fphuang(人在哈尔滨·四月)回复于 2006-04-24 13:54:35 得分 0
不是没人会做,而是这个东西比较复杂,做过的人不轻易放出代码,又没有什么效益,所以就见不到了Top
5 楼xk198262(不如这样)回复于 2006-04-24 14:12:59 得分 0
赚钱取个漂亮老婆..你发的代码..
我是有的..不过我要的是上传的进度条..
是要封装httpmodules的..然后用ajax时时刷新客户端
比你这个复杂多拉...
不知csdn上有乐于助人的强人没!!!!!Top
6 楼zorou_fatal(The world and system is even)回复于 2006-04-24 14:15:33 得分 0
去codeproject搜,那里有Top
7 楼biao1(蓝色代码)回复于 2006-04-24 14:21:38 得分 0
mark 以后学习 顺便帮你顶上!Top
8 楼lizheng__114(浪淘沙)回复于 2006-04-24 14:42:52 得分 0
留个记号,学习Top
9 楼chenghp(不登高山,不知天之高也;不临深溪,不知地之厚也。)回复于 2006-04-24 14:53:39 得分 0
帮你dingTop
10 楼lubosun(大白菜)回复于 2006-04-24 14:59:29 得分 0
学习,还没做过呢Top
11 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2006-04-24 15:01:11 得分 50
看看
http://teddyma.cnblogs.com/archive/2006/04/01/364171.aspxTop
12 楼xk198262(不如这样)回复于 2006-04-24 15:47:15 得分 0
这个链接文章我看过..
就是我所说的郁闷...2.0的...555Top
13 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2006-04-24 15:50:05 得分 0
http://blog.joycode.com/dotey/archive/2005/06/12/53557.aspxTop
14 楼xk198262(不如这样)回复于 2006-04-24 17:03:35 得分 0
哈哈..真是多谢你拉..
其实我刚开始做这个进度条的时候...
就看到了这个文章...
只不过就下了个单独进度条的源程序...
唉...搞得我几天没睡好..
现在终于解决拉...真是多谢你拉..万分感谢..嘿嘿..
不过我就10分拉..过几天分涨到50我给你啊..哈哈...Top
15 楼szc21(卖炭翁)回复于 2006-04-24 17:08:44 得分 0
做个记号,晚上加班看Top
16 楼minwellcool(霰弹炮打蚊子)回复于 2006-04-24 17:13:07 得分 0
记下!!!Top
17 楼zhuzhu_syj(猪猪)回复于 2006-04-25 07:57:14 得分 0
学习Top
18 楼yynice(小楼听雨)回复于 2006-04-25 08:20:07 得分 0
blog.joycode.com 怎么打开出错了?Top
19 楼hjh1982(能说不是错)回复于 2006-04-25 08:59:47 得分 0
你看看宝玉的博客,他那里有这个1.1的进度条
好像是2.0的那个上传进度条也是由他的那个改编的Top
20 楼ZJQ100()回复于 2006-04-25 15:10:28 得分 0
http://blog.joycode.com/dotey/archive/2005/06/12/53557.aspx
Server Error in '/' Application.
--------------------------------------------------------------------------------
Runtime Error
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".
<!-- Web.Config Configuration File -->
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.
<!-- Web.Config Configuration File -->
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>
Top
21 楼airapple5(MiChAeL)回复于 2006-04-25 15:20:59 得分 0
markTop
22 楼zgjsisuo(zgj)回复于 2006-04-25 19:21:50 得分 0
markTop
23 楼LoveMango(幻风)回复于 2006-05-16 08:09:08 得分 0
markTop
24 楼qij2256(应天.Net)回复于 2006-05-21 17:22:19 得分 0
2Top
25 楼erqie()回复于 2006-07-25 23:29:41 得分 0
markTop




