[英]How to stop the javascript loader when the data retrieved from the database
我正在使用带有setTimeout函数的javascript在按钮的onclientclick上显示GIF。 我正在尝试从数据库中检索数据后停止/隐藏GIF。 到目前为止没有运气。 我尝试了以下方法。 任何帮助是极大的赞赏。
的CSS
.modal {
position: fixed;
top: 0;
left: 0;
background-color: black;
z-index: 99;
opacity: 0.9;
filter: alpha(opacity=80);
-moz-opacity: 0.9;
min-height: 100%;
width: 100%;
}
.loading {
font-family: Arial;
font-size: 10pt;
width: 200px;
height: 100px;
display: none;
position: fixed;
opacity: 0.9;
z-index: 999;
}
Java脚本
function ShowLoader() {
if (Page_ClientValidate('DownloadReport')) {
setTimeout(function() {
var modal = $('divLoader');
modal.addClass('modal');
$('body').append(modal);
var loading = $('.loading');
loading.show();
var top = Math.max($(window).height() / 2 - loading[0].offsetHeight / 2, 0);
var left = Math.max($(window).width() / 2 - loading[0].offsetWidth / 2, 0);
loading.css({
top: top,
left: left
});
}, 100);
} else {
}
};
function HideLoader() {
document.getElementById('<%= divLoader.ClientID%>').style.visibility = "hidden";
};
在按钮上单击“我调用showLoader”,
<asp:Button ID="btnGenerateRep" CssClass="btnGenerateRep" runat="server" Text="Download Report" ValidationGroup="DownloadReport" OnClientClick="ShowLoader();" OnClick="btnGenerateRep_Click" />
我想从数据库中检索数据时停止它
C#代码
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
if (dt.Rows.Count > 0) {
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "HideLoader()", true);
string dateTimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss");
string excelFileName = aliasName + "-" + dateTimeStamp + ".xlsx";
string worksheetsName = "Sheet";
var format = new ExcelTextFormat();
format.Delimiter = ',';
format.EOL = "\r";
using(ExcelPackage package = new ExcelPackage()) {
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(worksheetsName);
worksheet.Cells["A1"].LoadFromDataTable(dt, true);
Response.Clear();
package.SaveAs(Response.OutputStream);
Response.AddHeader("content-disposition", "attachment; filename=" + excelFileName + ";");
Response.Charset = "";
Response.ContentType = "application/vnd.xlsx";
Response.End();
}
}
我正在从C#代码中调用javascript,但是没有触发。 还是从package.SaveAs出现“另存为”对话框时我可以捕获“保存”命令,然后从那里调用JavaScript?
我还尝试了在接收数据时隐藏GIF所在的asp:Panel。 仍然没有运气。 我真的很感谢您的帮助。 非常感谢
第一步
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "HideLoader()", true);
从if (dt.Rows.Count > 0) { ... }
因为这意味着如果有0
行,它将永远不会添加脚本,因此永远不会在客户端执行脚本,因此也永远不会隐藏加载。
作为第二项测试HideLoader,看看是否收到警报。
function HideLoader() {
alert('test');
};
如果收到警报,则表示它被调用。 之后,添加您自己的行,然后检查是否可行。
另外由于您使用的是jquery.show,也许也只是使用相同的方式来隐藏它? 选中此按钮可以根据需要进行更改。
$('.loading').hide();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.