我有<asp:Button />
,用于将某些DataTable
导出到Excel中。我需要在生成DataTable
时显示进度图像。以下是我的尝试,但仍然卡住了。可能是我不明白这里的生命周期。感谢任何帮助。
的 ASPX
<asp:Button ID="ExportResults" runat="server" UseSubmitBehavior="false" Text="Export Selected" OnClientClick="showWaitingForExport();" OnClick="ExportResults_Click"/>
的JavaScript
function showWaitingForExport() {
$("#progressbar").progressbar({ value: false });}
代码背后
protected void ExportResults_Click(object sender, EventArgs e)
{
DataTable resultDT = GenerateDataTable(); //This is the time taking function and after this I need to hide my progressbar while response still not get end
ScriptManager.RegisterStartupScript(this, this.GetType(), "stopprogress", "$('#progressbar').progressbar('destroy');", true);
string filename = "Search_Results.xlsx";
workbook.AddWorksheet(resultDT, "Search Results");
workbook.SaveAs(Server.MapPath("~/Temp/" + filename));
Response.ContentType = "application/vnd.ms-excel";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
Response.TransmitFile(Server.MapPath("~/Temp/" + filename));
Response.End();
}
答案 0 :(得分:0)
除非我误解了这个问题,否则请查看此链接 - 这是开发人员需要做的相当普遍的事情:http://www.dotnetcurry.com/showarticle.aspx?ID=227
单击按钮时会调用OnClientClick,但请求将转到服务器(OnClick =“ExportResults_Click”),浏览器/客户端将显示正常的加载页面(通常为空白页面)。您应该能够使用UpdatePanel与链接中描述的策略之一来显示更新面板进度条。解决这个问题的唯一方法(我知道)是使用异步回发,以便在服务器处理时仍然显示页面。
这有意义吗?这篇文章有帮助吗?如有必要,我可以详细介绍或展示一个例子。我不是在使用Visual Studio的计算机上拼凑一个例子,但如果没有其他人回答,我明天可以发布一些东西。