使用UpdatePanel中的Response对象

时间:2013-10-02 10:43:54

标签: jquery asp.net ajax updatepanel

我在使用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会导致完全回发。在我的情况下,它没有,这是问题。

1 个答案:

答案 0 :(得分:-1)

  1. 阅读这篇文章: Response.Write and 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);
    
  3. MS AJAX Client Library 4.x(ASP.NET AJAX控件的后端,如UpdatePanel)和IE 10之间存在不兼容。

    我写的是与Microsoft Connect的不兼容性。

    如果您的问题已得到解决,请在Microsoft Connect上投票我的报告。

    祝你好运。