在PostBackTrigger上显示UpdateProgress

本文关键字:UpdateProgress 显示 PostBackTrigger | 更新日期: 2023-09-27 18:02:05

我有一个UpdatePanel与以下触发器:

<Triggers>
    <asp:AsyncPostBackTrigger ControlID="ddlNames" EventName="SelectedIndexChanged" />
    <asp:PostBackTrigger ControlID="btnPullReport"/> 
</Triggers>

当SelectedIndexChanged事件被触发时,我可以从UpdateProgress看到我的加载gif,但当我单击btnPullReport按钮时,我没有。

必须是PostBackTrigger类型,否则我得到错误:

0x800a139e - JavaScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed.

btnPullReport创建一个Excel文件,并提示用户保存它。

btnPullReport_Click中的最后几行如下:

Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;  filename=Report.xlsx");
package.SaveAs(Response.OutputStream);
Response.End();

错误发生在Response.End();,它显示:{Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.}

我怎样才能使它显示UpdateProgress条点击按钮后?

在PostBackTrigger上显示UpdateProgress

首先,UpdateProgress只显示异步回发,你的按钮是"PostBackTrigger"而不是"AsyncPostBackTrigger"。您还必须知道,如果快速收到响应,UpdateProgress将不会显示,请参阅DisplayAfter属性http://msdn.microsoft.com/en-us/library/vstudio/system.web.ui.updateprogress.displayafter(v=vs.100).aspx

第二,对于部分更新,服务器端代码不能使用Page。响应对象,因为这会改变响应格式。更多信息请参阅http://forums.asp.net/p/1083296/1607033.aspx

经过我们的讨论,我建议你这样做:-在你的UpdatePanel上设置ChildrenAsTriggers属性为False。-不要将按钮定义为UpdatePanel的触发器(也不能同步或异步)-当按钮被点击时,使用手动机制来显示UpdateProgress。就像这个,我如何创建一个"请等待,正在加载中…"动画使用jQuery?