asp.net装载进度条及工作页面框架原理和实现

asp.net实现进度条 本人亲自整理,测试成功,无多余代码,简单易懂。 立即下载

asp.net装载进度条及工作页面框架主要由4个部分组成,这4个部分的名称及在整个框架中所起到的作用如下:

1.入口链接地址页面(aspx):比如,登录页面.提供到目标地址的一个链接,并向该目标传递一些启动必须的基本链接参数.

2.入口链接目标页面(aspx):该目标对象是整个框架的核心,页面装载时通过document.write输出2个iframe,其中一个iframe1包含在一个div中,该iframe指向装载进度形象页面.另一个iframe2的src设置为空(由后台代码在后期设置src指向实际目标工作页面),在输出2个iframe的html代码后,立即输出通过xmlHttp请求自身的request,并将request返回的值赋予iframe2的src属性.

                                      后台代码在页面装载的过程中,将传入的基本链接参数放置到cache中,备用.

                                      后台代码在收到前台代码的xmlHttp请求时,将cache中的基本链接参数,连同实际目标工作页面地址,一并以url的形式返回给xmlHttp请求者(即自身的前台Html代码)

3.装载进度形象页面(html):在界面上显示一个装载进度条,在onload事件中开始调用,当进度条读满时,关闭进度条的显示.

4.实际目标工作页面(aspx):在页面装载完成后通过window.parent索引到入口链接目标页面,关闭该包含iframe1的div的显示.

                                      后台代码接收启动必须的基本链接参数,该基本链接参数由入口链接目标页面的iframe2的src提供.

 

框架实现代码:

1.入口链接地址页面(aspx):

CS:

                System.Collections.Specialized.NameValueCollection parameters = new System.Collections.Specialized.NameValueCollection();
                parameters.Add("examId", gvActorList.DataKeys[e.Row.RowIndex].Value.ToString());
                parameters.Add("paperId", ((DisplayObject_V_BIZ_QUERY_EXAM_ACTOR)e.Row.DataItem).ACTOR_PAPER_ID);
                //string url = ControlHelper.EncodeUrl("modules/exam/Exam_Action.aspx", parameters);
                string url = ControlHelper.EncodeUrl("modules/exam/loading.aspx", parameters);
                string scripts = GeOpenFullWindowScript(url);
                e.Row.Cells[0].Text = string.Concat("<a href=/"javascript:", scripts, "/">", e.Row.Cells[0].Text, "</a>");

2.入口链接目标页面(aspx):

   HTML:

                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function outputloading()
        {
            document.write('<html>');
            document.write('<body>');
            document.write('<script type=/'text/javascript/'>');
            document.write('function createRequest()');
            document.write('{');
            document.write('var xmlHttp = false;');
            document.write('/*@cc_on @*/');
            document.write('/*@if (@_jscript_version >= 5)');
            document.write('try {');
            document.write('xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");');
            document.write('} catch (e) {');
            document.write('try {');
            document.write('xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");');
            document.write('} catch (e2) {');
            document.write('xmlHttp = false;');
            document.write('}');
            document.write('}');
            document.write('@end @*/');
            document.write('if (!xmlHttp && typeof XMLHttpRequest != /'undefined/') {');
            document.write('xmlHttp = new XMLHttpRequest();');
            document.write('}');
            document.write('return xmlHttp;');
            document.write('}');
            document.write('function request(url)');
            document.write('{');
            document.write('var request = createRequest();');
            document.write('request.open("GET", url, false);');
            document.write('request.send();');
            document.write('if (request.status != 200)');
            document.write('{');
            document.write('return /'请求失败/';');
            document.write('}');
            document.write('else');
            document.write('{');
            document.write('return request.responseText;');
            document.write('}');  
            document.write('}');
            document.write('<//script>');        
            var content = '<iframe id=/'frameLoading/' marginwidth=0 marginheight=0  frameborder=0 bordercolor=/'#000000/' scrolling=no src=/'loading.htm/' width=250 height=70><//iframe>';
            var left = 200;
            var top = 150;
            document.write('<DIV id="loadingPanel" display:block; style="Z-INDEX: 10; POSITION: absolute;  width:250px; height:70px;left:'+ left +';top:'+ top +'">'+content+'</DIV>');
            document.write('<iframe id=/'frameTarget/'marginwidth=0 marginheight=0 frameborder=0 bordercolor=/'#000000/' scrolling=no src=/'/' width=100% height=100%><//iframe>');           
            document.write('<script type=/'text/javascript/'>');
            document.write('var url = /'loading.aspx?target=true/';');
            document.write('var frame = document.getElementById(/'frameTarget/');');
            document.write('frame.src = request(url);');
            document.write('<//script>');
            document.write('<script type=/'text/javascript/'>');
            document.write('function closeMsgChain()');
            document.write('{try{window.opener.location.reload();self.close();}catch(e){}}');
            document.write('<//script>');
            document.write('<//body>');
            document.write('<//html>');
           
        }  
    </script>
</head>
<body onload="outputloading()">
    <form id="form1" runat="server">
    <div>       
    </div>
    </form>
</body>
</html>

 

 CS:

  protected void Page_Load(object sender, EventArgs e)
        {
            if (Request["target"] != null)
            {
                //向客户端回发缓存的参数
                string examId = (string)CacheHelper.GetServerCache(CacheHelper.PrepareCacheKey("loading_examId",SystemLogic.CurrentUser.ID));
                string paperId = (string)CacheHelper.GetServerCache(CacheHelper.PrepareCacheKey("loading_paperId",SystemLogic.CurrentUser.ID));
                System.Collections.Specialized.NameValueCollection parameters = new System.Collections.Specialized.NameValueCollection();
                parameters.Add("examId", examId);
                parameters.Add("paperId", paperId);
                string url = ControlHelper.EncodeUrl("Exam_Action.aspx", parameters);
                Response.Write(url);
                Response.End();
            }
            else if (!Page.IsPostBack)
            {
                System.Collections.Specialized.NameValueCollection parameters = ControlHelper.DecodeParameter(this.Request);
                if (parameters["examId"] != null)
                {
                    //将传入的参数置入缓存
                    CacheHelper.SetServerCache(CacheHelper.PrepareCacheKey("loading_examId",SystemLogic.CurrentUser.ID), parameters["examId"]);
                    CacheHelper.SetServerCache(CacheHelper.PrepareCacheKey("loading_paperId", SystemLogic.CurrentUser.ID), parameters["paperId"]);
                }
            }
        }

 

 

3.装载进度形象页面(html):

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css">
    body,html{margin:0;padding:20px;font-size:12px;font-family:Arial;font:12px/1 Tahoma, Arial;}
    .stepOut{height:20px;border:1px solid #b5d6e6;background:White;width:200px;overflow:hidden;display:none;}
    .stepIn{width:50px;background:red;border-top:1px solid b5d6e6;border-bottom:1px solid b5d6e6;overflow:hidden;color:#b5d6e6;text-align:center;font:12px/1.6 arial;}
    </style>
    <script type="text/javascript">
    //<![CDATA[
    function LoadBar(outer,iner,time){
    $=function (x){return typeof x=="string"?document.getElementById(x):x};
    outer=$(outer);
    iner=$(iner);
    var i,width,This=this,s=(time||2000)/10;
    this.run=function (){
    clearTimeout(This.t);
    outer.style.display='block';
    width=outer.offsetWidth;
    i=0;
    (function (){
    iner.style.width=width/s*i++;
    iner.innerHTML=Math.ceil(iner.offsetWidth/width*100)+'%';
    if(i<s){This.t=setTimeout(arguments.callee,10)
    }else
    {
        //装载完成,隐藏进度条
        window.parent.document.getElementById('loadingPanel').style.display = 'none';
    }
    })()
    }
    };
    function showloading()
    {
        //十秒进度条
        var ldh=new LoadBar(stepOut,stepIn,10000);
        ldh.run();
    }
    //]]>
    </script>
</head>
<body onload="showloading()">
<span>数据加载中,请稍后...</span>
<div class="stepOut" id="stepOut">   
    <div class="stepIn" id="stepIn" />
</div>
</body>
</html>

4.实际目标工作页面(aspx):

HTML:

<html>
<body topmargin="0" leftmargin="0">
<script type="text/javascript">
        //装载完成,隐藏进度条
        window.parent.document.getElementById('loadingPanel').style.display = 'none';
</script>
</body>
</html>

CS:

System.Collections.Specialized.NameValueCollection parameters = ControlHelper.DecodeParameter(this.Request);
                if (parameters["examId"] != null)
                {
                    this.userInfo.UserId = SystemLogic.CurrentUser.ID;
                    this.examInfo.ExamId = parameters["examId"];
                    this.paperInfo.ExamId = parameters["examId"];
                    this.paperInfo.PaperId = parameters["paperId"];                   
                }

框架运行效果:

asp.net文件上传(带进度条) 实操项目分离出来的一小部分,功能完整,希望对大家有所帮助! 立即下载

相关推荐

asp.net前台显示后台处理进度条

asp.net前台显示后台处理进度条,代码简单清晰,文章参考http://nongfuit.com/html/70/201201/8383.html有效果图

ASP.NET 给Web中的网页添加Loading进度条形式

前段时间客户提了一个需求,要求给网站中某些功能添加进度条形式,因为某些功能查询的数据量太大,经常会出现点击Search按钮,但是没有任何反应的情况,会让用户以为网站挂掉了,导致投诉的事情发生,所以客户要求必须要添加。   其实不论在网站中,或者是在APP中,添加动画Loading进度条,这都是必须要去做的。我们在浏览网页、玩游戏、或者在玩手机的时...

weixin_33728708的博客 1037

FPGA中Verilog HDL/VHDL实现NCO(数字控制振荡器)的查表法优化与性能分析

本文深入探讨了在FPGA中使用Verilog HDL/VHDL实现数字控制振荡器(NCO)的查表法优化与性能分析。文章详细解析了NCO的核心工作原理,包括相位累加器、查找表(ROM)的设计,并重点介绍了利用波形对称性压缩ROM、相位抖动注入等关键优化技巧,以提升无杂散动态范围(SFDR)并平衡速度、精度与资源消耗。

vscode6remote的博客 456

asp.net进度条

一、原理:      要实现进度条的实时反映,核心的技术就是对上传的数据进行“分块”读取,在读取每块数据时记录当前已上传的块数,根据分块的大小,即可知道已上传的大小,根据总大小,即可知道当前上传的进度。具体的技术还是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法从IIS为ASP.NET建立的pipe里分块读

chinazhangxin的专栏 642

告别GIS软件!用R语言ggplot2+ggmapcn绘制出版级世界地图(附5种投影对比图)

本文提供了一份完整的实践指南,教你如何利用R语言及其强大的ggplot2生态系统,结合ggmapcn包,绘制出出版级的世界地图。文章详细对比了五种经典地图投影(如摩尔维德、罗宾森投影)的代码实现与视觉差异,并讲解了如何添加比例尺、指北针等专业元素,最终导出高清PDF,实现从数据分析到专业可视化的全流程代码化操作,彻底告别传统GIS软件。

p5l2m9n4o6q的博客 408

【超详细】C#的单例模式

本文详细介绍了C#中的单例设计模式,包括两种实现方式:普通类泛型单例(Singleton<T>)和基于MonoBehaviour的组件单例(MonoSingleton<T>)。单例模式通过私有构造、静态私有实例和公共访问入口确保全局唯一实例,具有节省资源、保证数据一致性等优势。文章分别阐述了两者的核心原理、代码实现、使用场景及注意事项,并提供了日志管理器和音效管理器的具体应用示例。特别强调了多线程安全、初始化时机和避免过度使用等重要原则,为Unity开发中合理运用单例模式提供了全面指导。

grapefruit_lyy的博客 1534

ASP.NET技巧:教你制做Web实时进度条

网上已经有很多Web进度条的例子,但是很多都是估算时间,不能正真反应任务的真实进度。我自己结合多线程和ShowModalDialog制做了一个实时进度条,原理很简单:使用线程开始长时间的任务,定义一个Session,当任务进行到不同的阶段改变Session的值,线程开始的同时使用ShowModalDialog打开一个进度条窗口,不断刷新这个窗口获取Session值,反应出实时的进度。先新建

472

在昇腾910B上,用kubeadm快速拉起一个双节点K8s集群(保姆级避坑指南)

本文详细介绍了在昇腾910B服务器上使用kubeadm快速搭建双节点Kubernetes集群的完整流程,包括环境准备、容器运行时配置、kubeadm初始化、节点加入与网络插件部署等关键步骤,特别针对ARM架构和昇腾芯片提供了优化配置和避坑指南。

weixin_29204749的博客 246

在 Asp.Net Web 应用程序中长时间装载页面时显示进度条 选择自 chenweionline 的 Blog

   在 Asp.Net Web 应用程序中长时间装载页面时显示进度条,虽然是假进度条,不能实时反映装载进度,但是可以告诉用户页面正在装载,以免用户误以为系统故障或死机。  新建一个 Web 项目,添加4个文件:Default.htm;Progressbar.aspx;Second.aspx;common.css。  Default.htm 页面有一个超链,点击之后先装载 Progressba

小人物的专栏 *^_^* 1461

PCB中的CAF深度剖析与对策研究

摘要:本文系统研究了PCB板的导电阳极丝(CAF)问题,阐明了CAF是在电场作用下铜离子沿玻纤微裂通道迁移形成导电丝的现象,其形成需铜、水汽、电解质、偏压和迁移通道五个条件。CAF会导致PCB绝缘性能下降和信号传输异常,严重影响电子产品可靠性。研究提出了板材选择、钻孔工艺控制、叠板结构优化等预防措施,以及增大孔距、错位排列等设计注意事项,并介绍了IPC-TM-650-2.6.25测试标准。未来应在耐CAF材料、测试技术和制造工艺方面深入研究,以提升PCB可靠性。(150字)

2401_84691632的博客 1706

康耐视CogPMAlignTool模板匹配详解

康耐视CogPMAlignTool是一款基于边缘特征的模板匹配工具,适用于工业视觉检测。该工具提供PatMax、PatQuick、PatFlex等不同算法,分别对应高精度、快速匹配和柔性表面等应用场景。关键参数包括特征粒度(粗糙/精细)、边缘阈值、弹性范围等,支持旋转缩放匹配和极性忽略功能。工具操作流程包括图像采集、参数设置、模板训练和运行检测,通过调整查找概数、接收阈值等参数可优化识别效果。配套的卡尺工具(CogCaliperTool)通过一维投影和边缘筛选实现精准定位,适用于高精度尺寸测量场景。

2502_92473474的博客 1318

Asp.Net ==Web 应用程序中长时间装载页面时显示进度条

在 Asp.Net Web 应用程序中长时间装载页面时显示进度条,虽然是假进度条,不能实时反映装载进度,但是可以告诉用户页面正在装载,以免用户误以为系统故障或死机。  新建一个 Web 项目,添加4个文件:Default.htm;Progressbar.aspx;Second.aspx;common.css。  Default.htm 页面有一个超链,点击之后先装载 Progressbar.asp

等闲之辈 的 Gemini 's Blog 1025

Windows上MSYS2的安装和使用

MSYS2这个工具我是越用越喜欢,很多东西放在Linux上如鱼得水但是放在Windows上就没那么好用,比如ffmpeg,opencv等直接引用就行了,这个工具真的很省事。接下来带你们看看它的妙用。1、好好研究确实妙用无穷。

jiexijihe945的博客 4142

在ASP.NET中显示进度条

于加载时间比较长的ASP.NET页面,我们可以在客户端浏览器中显示进度条来显示页面正在装载。下面就是具体的实现过程: 1、新建项目,名字为WebPortal,在项目类型中选择Visual C#项目或者Visual Basic项目都可; 2、在模板类型中选择ASP.NET Web应用程序; 位置里输入:http://localhost/WebPortal; 添加新项:名字为ShowProgres

ido的专栏 1004

C++之2048小游戏 第二期

游戏会有初始化、绘制界面、处理输入、更新游戏状态、判断胜负等部分。所以,可能需要一个二维数组来表示4x4的网格,存储每个格子的数值。然后,需要处理键盘输入,尤其是方向键的控制,这可能需要使用EasyX的键盘事件处理函数。然后,关于图形绘制部分,每个格子的大小、颜色、数字的显示都需要设计。不同的数字对应不同的颜色,比如2是浅色,4稍深,以此类推。可能需要一个函数根据数字的值返回对应的颜色,然后在绘制时调用。接下来,处理数字的移动和合并逻辑。这是比较复杂的部分。

Lucky_Glory的博客 805

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

对于长时间装载的ASP.NET页面如何在客户端浏览器中显示进度?

<br />http://dotnet.aspx.cc/article/794566b9-5ea2-4782-2d42-e133f3c7ba74/read.aspx 对于加载时间比较长的ASP.NET页面,我们可以在客户端浏览器中显示进度条来显示页面正在装载。下面就是具体的实现过程: 新建项目,名字为WebPortal,在项目类型中选择Visual C#项目或者Visual Basic项目都可; 在模板类型中选择ASP.NET Web应用程序; 位置里输入:http://localhost/We

683

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

对于长时间装载的ASP.NET页面,如何在客户端浏览器中显示进度?

using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebCon

W_Andy的专栏 1191

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

用div显示页面加载进度条

对于加载时间比较长的ASP.NET页面,我们可以在客户端浏览器中显示进度条来显示页面正在装载。下面就是具体的实现过程 首先填加 引用 Using System.Threading; 然后在Page_Load事件中添加如下代码:Response.Write("");Response.Write("_");Response.Write("");Response.Write("mydiv

yale28的技术专栏 2107
上一篇: Error while trying to retrieve text for error ORA-12154 解决方案
下一篇: MMC不能打开文件 SQL Server Enterprise Manager.MSC 错误的处理
灿爸.
博客等级 码龄22年 64粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值