在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条点击按钮后?
首先,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?