画像を SQL Server 2008 データベースにアップロードするファイルアップロード コントロールがあり、保存ダイアログのポップアップ ボックスを使用してダウンロードしたいと考えています。ファイルをダウンロードするコードは正常に実行されますが、ダウンロード リンク ボタンをクリックしても何も起こりません。イベントはコード ビハインドから発生します。私の唯一の推測は、問題を引き起こしているのはモーダルポップアップであるということです。
<Modalpopup>
</ModalPopup>
<UpdatePanel>
--DetailsView
--------LinkButton(Download)
--DetailsView
</UpdatePanel>
ページの構造です。
<!-- Details View here -->
<asp:DetailsView ID="dvReviewCases" runat="server" Height="50px"
AutoGenerateRows="False" CssClass="dvCSS"
OnDataBound="dvADReviewCases_DataBound"
onpageindexchanging="dvReviewCases_PageIndexChanging" onitemcommand="dvReviewCases_ItemCommand"
>
<Fields>
<asp:TemplateField HeaderStyle-CssClass="dvHeaderStyle" HeaderText="Evidence" ItemStyle-CssClass="dvValueField" >
<ItemTemplate>
<asp:LinkButton ID="btnDownload" runat="server" Text='<%#Eval("evidenceID") %>' CommandName="Download" >
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
コードビハインド
// Download file from Evidence table
protected void dvReviewCases_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{
if (e.CommandName == "Download")
{
String strCaseID = Session["caseID"].ToString();
String strEvidenceID = Session["evidenceID"].ToString();
//Search for evidence file
DbCommand cmd = GetData.CreateCommand("ADGetEvidence");
GetData.AddParameter(cmd, strEvidenceID, "@evidenceID");
GetData.AddParameter(cmd, strCaseID, "@caseID");
GetData.GetResults(cmd);
// Check if datatable has row returned
if (GetData.getTable().Rows.Count > 0)
{
String fileName = "Evidence" + Session["caseID"].ToString();
byte[] file = null;
String fileType = GetData.getTable().Rows[0][1].ToString();
// Typecast resulting row to byte
file = ((byte[])GetData.getTable().Rows[0][0]);
Response.ContentType = fileType;
// Give user option to download file
Response.AddHeader("Content-Disposition","attachment;filename=" + fileName);
Response.BinaryWrite(file);
Response.End();
}
}
}