1

我在 asp.net 应用程序中出现和消失了一条“加载消息”。一个新的要求是,当单击链接按钮时会出现加载消息,然后假设它会在 excel 对话框弹出以打开或保存或取消(excel 文件)时消失。

如何检测此对话框?发生回发,我使用的是Response.End,但与excel对话框交互后似乎无法让“加载覆盖层消失”。

这发生在 ASP.NET 3.5 / EXT JS (EXT.NET) 中,但我可以像在这个项目中那样使用 jQuery。我玩过 Fiddler,但我对在 DOM 中处理事件和检测有点生疏。任何帮助表示赞赏。

4

1 回答 1

0

不久前我可能遇到过同样的问题。这是堆栈帖子...

下载文件并更新面板进度

如果您在此页面后面的代码中执行长时间运行的工作,您的更新面板将按预期运行。事件的生命周期可能是这样的。

  1. btnEvent 获取/构建 excel 文件。
  2. 在 btn 事件背后的代码中,执行构建/获取 excel 文件并将其存储在缓存中的工作......然后将 iframe 的源设置为提供 excel 作为下载(从缓存)的页面。更新面板一直显示进度 html。
  3. 当 html 刷新时,加载面板将消失,下载文件提示应从 iframe 中出现。

我不必编写任何 javascript 来使用更新面板来完成这项工作。

<asp:UpdateProgress ID="progress1" runat="server" AssociatedUpdatePanelID="up">
    <ProgressTemplate>
        <div id="processMessage">
            <table width="100%">
                <tr>
                    <td>
                        Loading...
                    </td>
                    <td>
                        <img alt="Please wait..." src="../Images/spinner.gif" />
                    </td>
                </tr>
            </table>
        </div>
    </ProgressTemplate>
</asp:UpdateProgress>


<asp:UpdatePanel runat="server" ID="up">
    <ContentTemplate>
            <div id="excel" align="right">
                <asp:Button runat="server" ID="btnExcelExport" Text="Export to Excel" OnClick="btnExcelExport_Click" />
            </div>
            <iframe runat="server" id="ifmExcel" width="0" height="0" marginheight="0" marginwidth="0" frameborder="0" />
    </ContentTemplate>
</asp:UpdatePanel>

您绝对可以使用 javascript 和 ajax 调用执行此操作,使用 beforeSend 和完成事件在工作完成时显示微调器,然后在完成时更改 iframe 的 src attr,启动下载。

希望这可以帮助。

于 2013-03-30T03:04:45.577 回答