Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ExtJS在下载文件时显示“正在处理下载”_Extjs_Extjs4_Extjs4.1_Extjs4.2_Extjs Mvc - Fatal编程技术网

ExtJS在下载文件时显示“正在处理下载”

ExtJS在下载文件时显示“正在处理下载”,extjs,extjs4,extjs4.1,extjs4.2,extjs-mvc,Extjs,Extjs4,Extjs4.1,Extjs4.2,Extjs Mvc,我有我的ExtJS4.2.1应用程序,其中有一个用于生成和下载PDF报告的报告部分 现在,在我的控制器中,我可以下载一个文件: onPrint: function() { Ext.core.DomHelper.append(document.body, { tag: 'iframe', id: 'downloadIframe', frameBorder: 0, width: 0,

我有我的ExtJS4.2.1应用程序,其中有一个用于生成和下载PDF报告的报告部分

现在,在我的控制器中,我可以下载一个文件:

onPrint: function() {


        Ext.core.DomHelper.append(document.body, {
            tag: 'iframe',
            id: 'downloadIframe',
            frameBorder: 0,
            width: 0,
            height: 0,
            css: 'display:none;visibility:hidden;height:0px;',
            src: '/api/report/GenerateReport'
        });
}
工作正常,但有些报告需要5到10秒才能生成,因此用户可能会多次单击“打印”按钮,因为他不知道正在生成文件

如何显示掩码处理下载或其他内容,以便在文件下载之前阻止UI


谢谢。

包含打印按钮的父面板应具有该属性

waitMsgTarget: true,
在按钮的处理程序函数中,在调用onPrint之前,添加以下行:

waitMsg: 'Processing download...',

希望有帮助。

我最后给出的解决方案如下:

A.使用Ajax调用服务器方法,该方法将生成文件,但将临时存储在服务器上。这里我显示一条等待消息

文件名是Guid

在服务器上创建文件后,我用文件名响应客户端

C.成功响应时的客户端创建一个IFrame,它的src属性指向刚刚创建的文件URL


文件已下载

这在使用Iframe下载文件时不起作用。实际上,Chrome在IFrame事件方面存在问题。它不会触发onload事件。你能共享该文件的JS代码吗?我使用了fpdf库,它工作得很好,如果您想看看我做了什么,请告诉我,我将共享这些文件