Web页面实现后台数据处理进度与剩余时间的显示
1、页面后台代码添加如下属性:
/// <summary>
/// 总数
/// </summary>
private double total
{
set
{
Session["DPMS.POP.POP_ExcelLeadIn_total"] = value;
}
get
{
if (Session["DPMS.POP.POP_ExcelLeadIn_total"] == null)
{
return ;
}
return Convert.ToDouble(Session["DPMS.POP.POP_ExcelLeadIn_total"]);
}
}
/// <summary>
/// 当前进度
/// </summary>
private int cur
{
set
{
Session["DPMS.POP.POP_ExcelLeadIn_cur"] = value;
}
get
{
if (Session["DPMS.POP.POP_ExcelLeadIn_cur"] == null)
{
return ;
}
return Convert.ToInt32(Session["DPMS.POP.POP_ExcelLeadIn_cur"]);
}
}
/// <summary>
/// 错误信息
/// </summary>
private string errMsg
{
set
{
Session["DPMS.POP.POP_ExcelLeadIn_errMsg"] = value;
}
get
{
if (Session["DPMS.POP.POP_ExcelLeadIn_errMsg"] == null)
{
return string.Empty;
}
return Session["DPMS.POP.POP_ExcelLeadIn_errMsg"].ToString();
}
}
/// <summary>
/// 开始时间
/// </summary>
private DateTime startTime
{
set
{
Session["DPMS.POP.POP_ExcelLeadIn_startTime"] = value;
}
get
{
if (Session["DPMS.POP.POP_ExcelLeadIn_startTime"] == null)
{
return DateTime.Now;
}
return Convert.ToDateTime(Session["DPMS.POP.POP_ExcelLeadIn_startTime"]);
}
}
2、在处理数据的开始,初始化total和startTime变量:
total = int.Parse(dataSet.Tables[0].Rows[0][0].ToString());
startTime = DateTime.Now;
3、在处理数据过程中,不断累加cur:
cur++;
4、前端每隔500毫秒获取进度:
<script type="text/javascript">
//更新进度
function refreshProcess() {
var itv = setInterval(function () {
$.ajax({
url: "ExcelLeadIn.aspx?action=getProcess&t=" + new Date().valueOf(),
type: "POST",
data: {},
success: function (data) {
if (data == "导入进度:100.00%") {
clearInterval(itv);
$("#msg").html(data);
alert("导入成功");
} else {
if (data.indexOf("错误:") == 0) {
clearInterval(itv);
}
$("#msg").html(data);
}
}
});
}, 500);
}
refreshProcess();
</script>
5、后台计算进度:
protected void Page_Load(object sender, EventArgs e)
{
string result = string.Empty; if (Request["action"] == "getProcess")
{
try
{
LoginEntity loginUser = (LoginEntity)this.Session[BasePage.LOGIN_USER_KEY];
string userId = loginUser.USER_ID;
if (string.IsNullOrEmpty(errMsg))
{
if (total == )
{
result = "导入进度:0%";
}
else
{
DateTime now = DateTime.Now;
TimeSpan ts = now - startTime; string time = string.Empty;
double per = cur / total;
if (per > )
{
double totalSeconds = ts.TotalSeconds / per - ts.TotalSeconds;
if (totalSeconds > )
{
time = (int)Math.Round(totalSeconds / ) + "分";
}
else
{
time = (int)Math.Round(totalSeconds) + "秒";
}
} string percent = (cur / total * ).ToString("0.00");
if (percent == "100.00")
{
cur = ;
total = ;
result = string.Format("导入进度:{0}%", percent);
}
else
{
result = string.Format("导入进度:{0}%,剩余时间:{1}", percent, time);
}
}
}
else
{
result = "错误:" + errMsg;
}
}
catch (Exception ex)
{
result = "错误:" + ex.Message;
}
} if (!string.IsNullOrEmpty(result))
{
Response.Write(result);
Response.End();
}
}
效果图(文字错了,不是“导入进度”,而是“数据处理进度:”):

Web页面实现后台数据处理进度与剩余时间的显示的更多相关文章
- Web页面向后台提交数据的方式和选择
1.通过表单提交 这是HTML支持最传统的提交方法,需要创建表单,然后表单包含各种类型的表单元素,还要有一个提交按钮,通过提交按钮来提交到后台,这种方式提交后页面会刷新. 2.通过网页链接提交 可以在 ...
- .netMVC:Web页面向后台提交数据的方式和选择
众所周知Web前端页面主要由HTML/CSS/Javascript组成,当要通过与用户的交互实现各种功能时,就需要向后台提交一些数据或者操作.在Web世界里各种实现眼花缭乱,但究其根本,不外乎三种方式 ...
- web页面上展示图片时,图片不显示,报错:ERR_CONTENT_LENGTH_MISMATCH
问题描述 前端页面加载css,和js文件的时候,经常出现ERR_CONTENT_LENGTH_MISMATCH的报错情况. 查找问题 在单独打开hearder中css,js的网络地址是能打开的 ...
- web页面过一段时间再次访问时显示数据库连接错误
这个问题是我之前遇到的,过了很久才想着去解决它,因为这也没多大影响,无非就是再访问一次的问题,后来有一次观察网站的运行情况时,发现这个问题还挺严重,如果一直用,就不会出现问题,如果中间歇一会,再用就会 ...
- 关于WEB页面的强制分页打印问题
最近项目中有个需求要求打印web页面数据,但是碰到打印预览显示数据时,多的数据就不翼而飞了(不分页),搞的很是焦灼~ 最先是以为纸张的问题,胡乱折腾了一番,把A4约硬是改成了LARGE号的纸,多的数据 ...
- Asp.Net MVC页面显示后台处理进度问题
这个问题的背景是,用户通过浏览器上传文件或Excel数据到系统中,页面需要时时显示后台处理进度,以增强用户的体验. 在GitHub上找到一个一个项目,基本实现了这个功能,具体效果如下图 代码实现过程大 ...
- DWR实现后台推送消息到web页面
DWR简介 DWR(Direct Web Remoting)可用于实现javascript直接调用java函数和后台直接调用页面javascript代码,后者可用作服务端推送消息到Web前端. (服务 ...
- Web 页面测试总结—控件类
web端页面测试,最常见的是基本控件的测试,只有了解常见的控件和其测试方法,才能掌握测试要点,避免漏测情况发生.根据日常工作总结,将控件和常见逻辑集合在一起,总结了几个控件类测试查场景如下. 导航条 ...
- Web页面测试总结(控件类)
界面测试,最多的就是各种控件的功能测试,只有掌握了其测试要点,了解测试方法,总结各种测试情景,才能熟练测试Web页面. 一.输入框 输入框分为文本输入框,数字输入框.一般使用在填写输入的内容上,比如名 ...
随机推荐
- GIT常用命令笔记
最近在做了一个自己的项目.两个人合作的,所以需要用到版本管理工具.本来打算学一下自己搭建svn的,后来朋友推荐我用git,免费,流行,好用,逼格.所以就学习了一下.发现这个git与已经使用惯了的svn ...
- [.net 面向对象编程基础] (1) 开篇
[.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...
- 安装 Linux 时碰到的硬盘分区的陷阱及应对
硬盘分区的陷阱及应对 之所以想到写这篇,是因为本人在折腾 Linux 系统的过程中,有多次掉入硬盘分区的陷阱的经历.最近几天,再一次掉入坑中,折腾了两天才从坑中爬出来.经过多方查询资料,终于弄明白了硬 ...
- RAID 概述
原创地址:http://www.cnblogs.com/jfzhu/p/3999283.html 转载请注明出处 独立硬盘冗余阵列(RAID, Redundant Array of Indep ...
- JS实战 · 级联菜单选择省份和城市(两种)
DOM编程步骤.思路 1.定义界面: 通过html标签将数据进行封装: 2.定义一些静态样式: 利用css: 3.需要动态地完成的和用户的交互: a:明确事件源: ...
- Hystrix框架1--入门
介绍 在开发应用中或多或少会依赖各种外界的服务,利用各个服务来完成自己的业务需求,现在流行的微服务架构更是离不开各个服务之间的调用,这就导致整体应用的可用性依赖于各个依赖服务的可用性. 比如一个依赖3 ...
- ASP.NET Web API自身对CORS的支持: CORS授权检验的实施
通过<EnableCorsAttribute特性背后的故事>我们知道:由CorsPolicyProvider提供的CorsPolicy表示目标Action采用的资源授权策略,ASP.NET ...
- java即时通信小例子
学习java一段时间了,今天写来一个即时通信的小例子练手在其过程中也学到了一些知识拿出来和大家分享,请路过的各位大神多多赐教... 好了下面讲一下基本的思路: 首先,编写服务器端的程序,简单点说吧就是 ...
- iOS-在团队开发过程中控制代码版本
Cornerstone Svn简单使用指南: -- what if 负责编写 一.安装并拷贝项目 1.第一步:安装svn.2.第二步:第一个使用svn,找到“Check Out Working Cop ...
- jQuery DateTimePicker 日期和时间插件
jQuery UI很强大,其中的日期选择插件Datepicker是一个配置灵活的插件,我们可以自定义其展示方式,包括日期格式.语言.限制选择日期范围.添加相关按钮以及其它导航等. 日期选择插件是一个配 ...