2015-04-05 94 views
1

在我的项目中,我动态地添加一组链接按钮。当我为这些链接按钮创建事件时,这些不会触发。这里是我的代码预先感谢。动态添加的链接按钮不会触发事件

namespace listofdirectories 
    { 
     public partial class directories : System.Web.UI.Page 
     { 
      protected void Page_Load(object sender, EventArgs e) 
      { 
       string[] drives = System.IO.Directory.GetLogicalDrives(); 

       foreach (string str in drives) 
       { 
        LinkButton lnk = new LinkButton(); 
        lnk.Text = str; 
        lnk.ID = str; 
        this.Panel1.Controls.Add(lnk); 
        Panel1.Controls.Add(new LiteralControl("<br />")); 
        lnk.Click += new System.EventHandler(lnk_Click); 
       } 
      } 
     protected void lnk_Click(object sender, EventArgs e) 
     { 
      Response.Redirect("files.aspx"); 
     } 
    } 
} 
+0

有人还在使用asp网页吗?为什么? – AgentFire 2015-04-05 08:02:08

回答

1

这是导致问题的ID中的特殊字符。您将ID分配为“C:\”或“D:\”。

得到它的工作

int i = 0; 
foreach (string str in drives) 
{ 
    LinkButton lnk = new LinkButton(); 
    lnk.Text = str; 
    lnk.ID = i.ToString();   

    this.Panel1.Controls.Add(lnk); 
    Panel1.Controls.Add(new LiteralControl("<br />")); 
    lnk.Click += new System.EventHandler(lnk_Click); 
    i++; 

} 

我添加了一个计数器基于ID只有字母数字字符和下划线 字符(_)的组合是该属性的有效值。包括空格 或其他无效字符将导致ASP.NET页面分析器错误。

仅供参考阅读本文档https://msdn.microsoft.com/en-us/library/system.web.ui.control.id%28v=vs.110%29.aspx

+0

谢谢,它的工作。 – prashanti 2015-04-05 09:52:07

+1

@prashanti如果它解决了您的问题,请求您将其标记为答案 – 2015-04-05 14:36:37

0

点击事件必须被分配早些时候则在面板中添加控制。

foreach (string str in drives) 
      { 
       LinkButton lnk = new LinkButton(); 
       lnk.Text = str; 
       lnk.ID = str; 
       lnk.Click += new System.EventHandler(lnk_Click); 
       this.Panel1.Controls.Add(lnk); 
       Panel1.Controls.Add(new LiteralControl("<br />")); 

      } 
相关问题