【问题标题】:Click event for dynamically created link buttons not firing?动态创建的链接按钮的单击事件未触发?
【发布时间】:2012-08-09 02:03:52
【问题描述】:

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

但这仅在单击最后一个链接按钮时触发。 谁能帮帮我?

【问题讨论】:

    标签: c#


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这个答案应该是评论,与问题无关。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-11
      • 1970-01-01
      • 2020-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      相关资源
      最近更新 更多