ASP的下降表现不同

时间:2013-06-25 05:58:24

标签: asp.net

我的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()”,因为这些控件具有点击事件。

我很困惑为什么这些方法在我没有打电话时被解雇了。

我长期坚持这个问题,我希望有一些知道如何解决它..

提前欢呼.. :)

1 个答案:

答案 0 :(得分:0)

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

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

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