对于未触发的动态创建的链接按钮,单击event

本文关键字:按钮 单击 event 链接 创建 于未触 动态 | 更新日期: 2023-09-27 18:16:06

这是我正在做的c# web应用程序
我正在动态创建链接按钮,如下所示。

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {         
                LinkButton ln = new LinkButton();
                ln.Text = ds.Tables[0].Rows[i].ItemArray[0].ToString();
                ln.ID =  ds.Tables[0].Rows[i].ItemArray[1].ToString();  
                divonlne.Controls.Add(ln);
                divonlne.Controls.Add(new LiteralControl("<br/>"));
            }

我的点击事件如下

 ln.Click += new EventHandler(Clicked);

在我的点击事件我得到链接按钮文本和Id如下

   protected void Clicked(object sender, EventArgs e)
        {
            LinkButton lno = sender as LinkButton;
            Session["Toname"] = lno.Text;
            Session["idto"] = lno.ID;
        }

但是这只在最后一个链接按钮被点击时触发。有人能帮我吗?

对于未触发的动态创建的链接按钮,单击event

您已经编写了如何订阅Click事件,但在示例中我看不到它。也许你订阅错地方了。这工作…

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{         
    LinkButton ln = new LinkButton();
    ln.Text = ds.Tables[0].Rows[i].ItemArray[0].ToString();
    ln.ID =  ds.Tables[0].Rows[i].ItemArray[1].ToString();  
    ln.Click += new EventHandler(Clicked);
    divonlne.Controls.Add(ln);
    divonlne.Controls.Add(new LiteralControl("<br/>"));
}

当在自定义控件中使用动态控件时,记得用INamingContainer接口来修饰你的类。这可以确保重新创建的控件正确地适应层次结构,并记住它们应该处理哪些事件。