如何在点击上传控制器的按钮时动态添加多个链接按钮

本文关键字:按钮 动态 添加 链接 控制器 | 更新日期: 2023-09-27 18:28:22

我有一个文件上传控制器到ftp服务器。我想检索每个上传文件的文件名,并想将其作为链接按钮显示在同一页面上。因此,我想将链接按钮动态添加到页面中。我已经这样做了。但当上传多个文件时,它会替换之前添加的链接,并且只将最后添加的文件显示为链接按钮。

  protected void UploadButton_Click(object sender, EventArgs e)
{
    string filename = Path.GetFileName(FileUploadControl.FileName);
    Session["f_name"] = filename;

    Panel1.Controls.Add(new LiteralControl("<div>"));
    LinkButton lb = new LinkButton();
    lb.Text = filename;
    lb.ID = filename;
    Session["lb_pdf"]=lb.Text;
    string pdf=(string)Session["lb_pdf"];
    Panel1.Controls.Add(lb);
    Panel1.Controls.Add(new LiteralControl("</div>"));
    lb.PostBackUrl = "Default2.aspx";

如何动态添加多个链接按钮?请帮助

如何在点击上传控制器的按钮时动态添加多个链接按钮

您可以使用List<string>而不是单个字符串:

List<string> allFiles = new List<string>();
if(Session["f_name"] != null)
    allFiles = (List<string>)Session["f_name"];
else
    Session["f_name"] = allFiles;
allFiles.Add(filename);
foreach(string fileName in allFiles)
{
    // now create the LinkButtons ...
}

请注意,您必须在每次回发时重新创建所有动态创建的控件。因此,如果您可以在不使用UploadButton的情况下从此页面回发,则应该使用Page_InitPage_Load来重新创建旧的LinkButtons。这也是生命周期中更好的地方。

请参阅:真正理解动态控制(将动态控制添加到控制树)