这是我在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;
}
但是只有在单击最后一个链接按钮时才会触发。 任何人都可以帮助我吗?
答案 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 界面装饰您的类。这可以确保重新创建的控件正确地适应层次结构,并记住它们应该处理哪些事件。