0

我的 aspx 页面中有一个下拉列表,我从中下载数据。从下拉列表中,我将选择文件格式,数据将以该特定格式下载

这是我的下拉菜单。

<asp:DropDownList ID="ddlExportRprts" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlExportRprts_SelectedIndexChanged"> 
<asp:ListItem Text="Select" Value="0" Selected="True"></asp:ListItem>
<asp:ListItem Text="Excel" Value="1"></asp:ListItem>
<asp:ListItem Text="CSV" Value="2"></asp:ListItem>
</asp:DropDownList>

这是下拉列表的后端方法。

protected void ddlExportRprts_SelectedIndexChanged(object sender, EventArgs e)
{
    string strFileName="Test";
    string strDataFilePath = Server.MapPath("./AttachedFiles/") + "\\" + strFileName + ".xls";
    DownLoadFile(strDataFilePath, strFileName);
}


private void DownLoadFile(string strFilePath, string strFileName)
{
   if (System.IO.File.Exists(strFilePath))
   {
      Response.ContentType = "application/octet-stream";
      Response.AppendHeader("Content-Disposition", "attachment; filename =" + strFileName + ".xls");
      ddlExportRprts.SelectedValue = "0";
      Response.TransmitFile(strFilePath);
      Response.End();
   }
}

每当我从下拉文件中选择任何选项时,都会以选定的格式下载..没有问题。

但是在下载文件之后,然后我单击任何服务器端控件,例如按钮,链接按钮,复选框,单选按钮任何其他下拉菜单,正在调用此方法“ddlExportRprts_SelectedIndexChanged()”,因为这些控件在那里点击事件。

我很困惑为什么当我不调用它时会触发这些方法。

我长期陷入这个问题,我希望有人知道如何解决它..

提前欢呼.. :)

4

1 回答 1

0

当您将文件写入响应时,仅发送文件。页面的其余部分不会刷新。

因此,下拉选择事件将在服务器上再次触发。

为避免SelectedIndexChanged触发事件,您可以在使用 javascript 提交页面之前将下拉列表的值重置为其原始值。

于 2013-06-25T06:03:17.230 回答