CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

Csdn里就没人会做asp.net1.1的上传进度条吗????

楼主xk198262(不如这样)2006-04-24 13:46:21 在 .NET技术 / ASP.NET 提问

查了很多资料..很多文章..就是没查到相应的解决方案.  
  找到唯一一个有源码的还是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

相关问题

关键词

得分解答快速导航

  • 帖主:xk198262
  • LoveCherry

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo