我的网页上有一个asp转发器。我正在制作论坛网站的基础设施,我的问题是,转发器使用ItemDataBound方法从数据库中获取问题的答案。如果附加了文件,则可以看到下载按钮和文件名标签。我在ItemDataBound方法中进行检查。但是当我点击下载按钮时,我想在标签上获取文件名,该文件名属于与该下载按钮相同的转发器。 this.label.text没有帮助
感谢您的回答。
这是我检查的ItemDataBound方法的一部分。我想在完全相同的转发器上看到CevapEk标签的内容,以便我可以生成下载链接。
string s = DataBinder.Eval(e.Item.DataItem, "dosya").ToString();
if (s != "")
{
CevapEk = (Label)e.Item.FindControl("CevapEk");
if (CevapEk != null)
{
CevapEk.Text = DataBinder.Eval(e.Item.DataItem, "dosya").ToString();
CevapEk.Visible = true;
}
Button CevapEkIndir = (Button)e.Item.FindControl("CevapEkIndir");
if (CevapEk != null)
{
CevapEkIndir.Text = "Indir";
CevapEkIndir.Visible = true;
}
HiddenField hdn = (HiddenField)e.Item.FindControl("hdnCevapEk");
}
这是下载事件方法。我需要在开头的文件名(字符串dosya)
protected void CevapEkIndir_Click(object sender, EventArgs e)
{
if (this.CevapEk != null)
{
string dosya = this.CevapEk.Text;
string dosya_path = @"\uploadCevap\";
dosya_path = dosya_path + dosya;
Response.Clear();
Response.AppendHeader("Content-Disposition", "attachment; filename=" + dosya);
Response.TransmitFile(Server.MapPath(dosya_path));
Response.End();
}
}
答案 0 :(得分:1)
试试这个:
protected void CevapEkIndir_Click(object sender, EventArgs e)
{
Button CevapEkIndir = ((Button)sender);
Control container = CevapEkIndir.NamingContainer;
Label CevapEk = (Label)container.FindControl("CevapEk");
if (CevapEk != null)
{
string dosya = CevapEk.Text;
string dosya_path = @"\uploadCevap\";
dosya_path = dosya_path + dosya;
Response.Clear();
Response.AppendHeader("Content-Disposition", "attachment; filename=" + dosya);
Response.TransmitFile(Server.MapPath(dosya_path));
Response.End();
}
}