0

我有一个下拉列表,其中下载作为一个选项

当用户选择下载选项时,我正在使用响应下载文件。下载文件后,我想将下拉列表索引更改为0。我尝试通过在下载文件后将下拉列表的选定索引设置为0。但这根本不是问题。如果下载文件后发生任何回发,请再次在下拉列表中自动选择下载选项。

选择下载选项时,我正在调用以下方法。

protected void downloadfile()
{
         Response.Clear();
         Response.Buffer = false;
         Response.AddHeader("Accept-Ranges", "bytes");
         Response.ContentType = "application/octet-stream";
         Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
         Response.AddHeader("Connection", "Keep-Alive");
         Response.OutputStream.Write(buffer, 0, bytesRead);
         Response.Flush();
}

请分享您的建议以解决此问题....

4

1 回答 1

0

我通过使用 iframe 解决了这个问题。

只要在下拉列表中选择了下载选项,我就会在服务器端调用 javascript 函数DownloadFile(),如下所示:

protected void ddlSelectedAction_SelectedIndexChanged(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this.Page, GetType(), "download", "DownloadFile();", true);

    // We can do what ever we want, You can redirect to another page or anything you want
    //Here I am changing the ddlSelectedAction selected index to 0
    ddlSelectedAction.SelectedIndex = 0;

}

下面是那个javascript函数

DownloadFile()
{

    var filename= $get("Filename").value;

    // Point the IFRAME to GenerateFile, with the
    //   desired region as a querystring argument.
    iframe.src = "GenerateFile.ashx?fname=" + filename;

    // This makes the IFRAME invisible to the user.
    iframe.style.display = "none";

    // Add the IFRAME to the page.  This will trigger
    //   a request to GenerateFile now.
    document.body.appendChild(iframe); 
}   

在上面的函数中,我正在创建一个 Iframe,源将是处理程序文件(GenerateFile.ashx)和您可以传递的任何查询字符串,用于下载文件名、文件路径等。在处理程序文件的页面加载中,我正在编写下载文件的代码。现在我们可以在下载文件后做任何我们想做的操作。

于 2013-07-04T17:55:43.490 回答