单击事件动态创建的链接按钮没有触发?

时间:2011-11-30 10:12:58

标签: c#

这是我在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);

在我的点击事件中,我获得了linkbutton文本和Id,如下所示

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

但是只有在单击最后一个链接按钮时才会触发。 任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

您已经编写了如何订阅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/>"));
}

答案 1 :(得分:-2)

在自定义控件中使用动态控件时,请记住使用 INamingContainer 界面装饰您的类。这可以确保重新创建的控件正确地适应层次结构,并记住它们应该处理哪些事件。