在asp.net中发生服务器端执行时更改客户端组件的属性

时间:2014-01-22 04:09:35

标签: asp.net client-side aspbutton

我有<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();
}

1 个答案:

答案 0 :(得分:0)

除非我误解了这个问题,否则请查看此链接 - 这是开发人员需要做的相当普遍的事情:http://www.dotnetcurry.com/showarticle.aspx?ID=227

单击按钮时会调用OnClientClick,但请求将转到服务器(OnClick =“ExportResults_Click”),浏览器/客户端将显示正常的加载页面(通常为空白页面)。您应该能够使用UpdatePanel与链接中描述的策略之一来显示更新面板进度条。解决这个问题的唯一方法(我知道)是使用异步回发,以便在服务器处理时仍然显示页面。

这有意义吗?这篇文章有帮助吗?如有必要,我可以详细介绍或展示一个例子。我不是在使用Visual Studio的计算机上拼凑一个例子,但如果没有其他人回答,我明天可以发布一些东西。