0

我在更新面板中使用 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 会导致发生完整的回发。在我的情况下,它没有,这是问题所在。

4

1 回答 1

-1
  1. 阅读这篇文章: Response.Write 和 UpdatePanel

  2. 如果您使用的是 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 上的报告。

祝你好运。

于 2013-10-18T08:38:40.640 回答