Reputation: 67
I have a gridview in which I have one column for downloading pdf files for each row. I fire a javascript function which uses "window.location.href" to create and download PDF file from another page. Now on Clientclick of some button ,I am calling a javascript function in which a for loop reads each line of gridview and fire click event (of the button which i used in grid to download PDF) for downloading multiple PDF files at once for all the rows. By using this technique I am only getting PDF with the details of last row only ,that is m getting only one PDF after firing click event for each row.
Upvotes: 0
Views: 1821
Reputation: 4373
I do the following:
theBuffer = new exchanger('dwnld');
Create a javascript function that you will call whenever you want to initiate a file download :
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¶m2=val2&etc=whatever"; // send whatever data you need to the php program via query string parameters
theBuffer.sendData(data); // initiate the file download
}
Note: The php back end file download program that handles the requests can do whatever it needs to do with the parameters you send it in order to put together/retrieve the correct data/file for download. After much tinkering this combination is what consistently works for me
Include this little bit of html in your body section. I usually put it just before the closing body tag:
<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.
The result is that the user never leaves the current page to download any number of files because the actual download is handled in a separate page (aka the iframe). I have used it without issue in all of my projects for years now.
Upvotes: 1