/// <summary> /// 总数 </summary> private double total { set { Session["DPMS.POP.POP_ExcelLeadIn_total"] = value; } get { if (Session["] == null) { return 0; } return Convert.Todouble(Session["]); } } 当前进度 int cur { DPMS.POP.POP_ExcelLeadIn_curreturn Convert.ToInt32(Session[ 错误信息 string errMsg { DPMS.POP.POP_ExcelLeadIn_errMsgreturn .Empty; } return Session[].ToString(); } } 开始时间 private DateTime startTime { DPMS.POP.POP_ExcelLeadIn_startTimereturn DateTime.Now; } return Convert.ToDateTime(Session[]); } }
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( () { $.ajax({ url: "ExcelLeadIn.aspx?action=getProcess&t=" + new Date().valueOf(),type: "POST",data: {},success: (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 = .Empty; if (Request[action"] == getProcess) { try { LoginEntity loginUser = (LoginEntity)this.Session[BasePage.LOGIN_USER_KEY]; string userId = loginUser.USER_ID; if (.IsNullOrEmpty(errMsg)) { if (total == ) { result = 导入进度:0%; } { DateTime Now = DateTime.Now; TimeSpan ts = Now - startTime; string time = .Empty; double per = cur / total; if (per > ) { double totalSeconds = ts.TotalSeconds / per - ts.TotalSeconds; if (totalSeconds > 60) { time = (int)Math.Round(totalSeconds / 60) + 分; } { time = (int)Math.Round(totalSeconds) + 秒; } } string percent = (cur / total * 100).ToString(0.00); if (percent == 100.00) { cur = ; total = ; result = string.Format(导入进度:{0}% { result = 导入进度:{0}%,剩余时间:{1} { result = 错误:" + errMsg; } } catch (Exception ex) { result = ex.Message; } } if (!.IsNullOrEmpty(result)) { Response.Write(result); Response.End(); } }
效果图(文字错了,不是“导入进度”,而是“数据处理进度:”):
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。