目标:我想在报告下载后显示加载程序。 为此,我创建了一个连续检查会话值的函数,如果会话值为“true”,我隐藏加载器意味着生成报告,否则连续显示加载器。找到以下代码:
<script type="text/javascript">
var interval = 0;
var session = '';
// called when click on ViewReport button
function StartCheckingLoaderSessionValue() {
interval = setInterval(function() { CheckLoaderSessionValue() }, 1000)
}
function CheckLoaderSessionValue() {
session = '<%= Session["IsReportGenerated"]%>'
alert(session);
if (session == "false") {
document.getElementById("divLoader").style.display = 'block';
}
else {
document.getElementById("divLoader").style.display = 'none';
clearInterval(interval);
}
</script>
以下是在 ViewReport 按钮上生成Excel报告文件的方法点击
private void DownloadExcelFile(string m_strFileName)
{
try
{
string PathToExcelFile = m_strFileName;
FileInfo file = new FileInfo(PathToExcelFile);
string ff = file.Name.Replace(".xlsm",".xls");
if (file.Exists)
{
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename="+ff+"");
Response.AddHeader("Content-Type", "application/Excel");
Response.ContentType = "application/vnd.xls";
Response.AddHeader("Content-Length", file.Length.ToString());
Response.WriteFile(file.FullName);
//Response.Flush();
HttpContext.Current.Session["IsReportGenerated"] = "true";
//HttpContext.Current.Response.End();
Response.End();
Response.Close();
Context.ApplicationInstance.CompleteRequest();
Random r = new Random();
int rid = r.Next();
}
else
{
}
}
finally
{
}
}
在上面的方法中,我设置了 Session [“IsReportGenerated”] =“true”的值,这意味着报告已生成,正如您在我的javascript代码中看到的,我隐藏了我的 divLoader
但问题是在警报(会话)中,我总是在 ViewReport 按钮后“false”没有“真实”点击。
注意:我无法使用 UpdateProgress 因为此功能在另一个页面上,所以我从未在同一页面上获得回发完成事件。
如果此问题与回发有关。请帮忙。
提前致谢。