我的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()”,因为这些控件具有点击事件。
我很困惑为什么这些方法在我没有打电话时被解雇了。
我长期坚持这个问题,我希望有一些知道如何解决它..
提前欢呼.. :)
答案 0 :(得分:0)
将文件写入响应时,仅发送文件。页面的其余部分不会刷新。
因此,将在服务器上再次触发下拉选择事件。
为避免触发SelectedIndexChanged
事件,您可以在使用javascript提交页面之前将下拉列表的值重置为其原始值。