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 に答える