我在使用updatepanel中的Response对象时遇到问题
<asp:UpdatePanel ID="UP_ExportPrompt" runat="server" UpdateMode="Always">
<ContentTemplate>
<div>
<ul>
<li>
<label class="f450">
<asp:Literal runat="server" Text="<%$ Resx : Reports_ExportOnlyPrompt %>" />
</label>
</li>
<li>
<label class="f80">
<asp:Label runat="server" Text="<%$ Resx : FileFormatColon %>" />
</label>
<asp:DropDownList ID="DDL_ExportFileType" runat="server">
<asp:ListItem Value="0" Text="Excel" />
<asp:ListItem Value="1" Text="PDF" />
<asp:ListItem Value="2" Text="Word" />
</asp:DropDownList>
</li>
<li class="right">
<asp:Button ID="BT_CreateExport" runat="server" Text="OK" OnClick="BT_CreateExport_OnClick" />
<asp:Button ID="BT_CreateReport" runat="server" Text="<%$ Resx : Reports_ContinueWithImmediateView %>" OnClick="BT_CreateReport_OnClick" />
<asp:Button ID="BT_Cancel" runat="server" Text="<%$ Resx : CancelVerb %>" OnClick="BT_Cancel_OnClick" />
</li>
</ul>
</div>
</ContentTemplate>
</asp:UpdatePanel>
UP_ExportPrompt更新面板内容显示在Nyro模式窗口中。单击BT_CreateExport后,将创建excel文件并使用Response对象发送到客户端。我没有为此粘贴代码,因为它与问题无关。
现在,我尝试使用
创建按钮作为触发器<Triggers>
<asp:PostBackTrigger ControlID="BT_CreateExport" />
</Triggers>
并且它不再起作用了。
有人知道这个问题的解决方案吗?
这是一个已知的问题,并且“将按钮设置为触发器”解决方案似乎可以解决大多数此类问题的问题,但这对我不起作用
引发的错误是:
0x800a139e - JavaScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed.
编辑:
好的,我已经设法找到有关该问题的更多信息。即使我设置PostBackTrigger
,回发仍然是异步的。根据文档,PostBackTrigger会导致完全回发。在我的情况下,它没有,这是问题。
答案 0 :(得分:-1)
阅读这篇文章: Response.Write and UpdatePanel
如果您使用的是IE 10,请在PageLoad
事件中写下以下代码:
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(this.BT_CreateExport);
scriptManager.RegisterPostBackControl(this.BT_CreateReport);
scriptManager.RegisterPostBackControl(this.BT_Cancel);
MS AJAX Client Library 4.x
(ASP.NET AJAX控件的后端,如UpdatePanel
)和IE 10之间存在不兼容。
我写的是与Microsoft Connect的不兼容性。
如果您的问题已得到解决,请在Microsoft Connect上投票我的报告。
祝你好运。