0

我有一个gridview,其中有一列用于下载每一行的pdf文件。我触发了一个javascript函数,它使用“window.location.href”从另一个页面创建和下载PDF文件。现在在某个按钮的Clientclick上,我正在调用一个javascript函数,其中for循环读取gridview的每一行并触发click事件(我在grid中用于下载PDF的按钮)以一次下载多个PDF文件行。通过使用这种技术,我只得到包含最后一行细节的 PDF,也就是说,在为每一行触发点击事件后,我只得到一个 PDF。

4

1 回答 1

1

我执行以下操作:

  1. 在 head 部分中包含exchange.js javascript 文件
  2. 在页面加载时初始化交换器对象:theBuffer = new exchanger('dwnld');
  3. 创建一个 javascript 函数,当您想要启动文件下载时将调用该函数:

     function downloadFile(){
          // you can add parameters to the function as needed to pass in dynamic data sent to the back end download handler
          data = "http://your_backend_file_download_handler.php?param1=val1&param2=val2&etc=whatever";  // send whatever data you need to the php program via query string parameters
          theBuffer.sendData(data);  // initiate the file download
     }
    

    注意:处理请求的 php 后端文件下载程序可以对您发送的参数做任何需要做的事情,以便组合/检索正确的数据/文件以供下载。经过多次修补后,这种组合一直对我 有用

  4. 在您的正文部分中包含这一点 html。我通常把它放在结束体标签之前:

     <iframe name="dwnld" id="dwnld" style="width:0;height:0;border:0">
     </iframe>
    
     Note:  the id value assigned to the iframe is the same value given in step 2 when initializing.
    

结果是用户永远不会离开当前页面来下载任何数量的文件,因为实际下载是在单独的页面(也称为 iframe)中处理的。多年来,我在所有项目中都毫无问题地使用了它。

于 2013-07-24T12:17:40.983 回答