複数のファイルをアップロードしてダウンロードするオプションを提供したいと思います。私は動的に似リンクボタンを作成しています:動的に作成されたリンクボタンがクリックされなかった場合のイベントを表示しない
private void AddLinkButtons()
{
string[] fileNames = (string[])Session["fileNames"];
string[] fileUrls = (string[])Session["fileUrls"];
if (fileNames != null)
{
for (int i = 0; i < fileUrls.Length - 1; i++)
{
LinkButton lb = new LinkButton();
phLinkButtons.Controls.Add(lb);
lb.Text = fileNames[i];
lb.CommandName = "url";
lb.CommandArgument = fileUrls[i];
lb.ID = "lbFile" + i;
//lb.Click +=this.DownloadFile;
lb.Attributes.Add("runat", "server");
lb.Click += new EventHandler(this.DownloadFile);
////lb.Command += new CommandEventHandler(DownloadFile);
phLinkButtons.Controls.Add(lb);
phLinkButtons.Controls.Add(new LiteralControl("<br>"));
}
}
そして、私のDownloadFileイベントは次のとおりです。
protected void DownloadFile(object sender, EventArgs e)
{
LinkButton lb = (LinkButton)sender;
string url = lb.CommandArgument;
System.IO.FileInfo file = new System.IO.FileInfo(url);
if (file.Exists)
{
try
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(file.FullName);
Response.End();
}
catch (Exception ex)
{
}
}
else
{
Response.Write("This file does not exist.");
}
}
私は、画面上のリンクボタンを取得していますが、DownloadFileイベントがクリックした後に呼び出されることはありません。私は、コメントされているすべてのオプションを試してみましたが、動作しません。コードの何が間違っていますか?
何かを間違って最初の行を削除追加されますか? 'LinkButton lb =新しいLinkButton(); lb =(LinkButton)lbTest; ' – Steve
それは間違っていた...私はそれを削除し、まだ動作しません。 – user1181942
phLinkButtonsとは何ですか? –