动态创建链接按钮列表,链接按钮不回发

嗨,我正在’ul li’列表中动态创建链接按钮。 然后我尝试将每个链接按钮绑定到单击事件,其中我将标签设置为单击链接按钮的文本。 然而应该开火的事件不会被解雇?

if (!Page.IsPostBack) { int listItemIds = 0; foreach (Node productcolour in product.Children) { HtmlGenericControl li = new HtmlGenericControl("li"); LinkButton lnk = new LinkButton(); lnk.ID = "lnk" + listItemIds; lnk.Text = productcolour.Name; lnk.Click += new EventHandler(Clicked); //lnk.Command += new CommandEventHandler(lnkColourAlternative_Click); //lnk.Click li.Controls.Add(lnk); ul1.Controls.Add(li); listItemIds++; } } 

以上内容包含在if(!page.ispostback)中,标签文本永远不会在其他地方设置。 inheritance人参加此次活动

 protected void Clicked(object sender, EventArgs e) { LinkButton lno = sender as LinkButton; litSelectedColour.Text = lno.Text; } 

代码必须在每个回发上运行:

  protected override void OnInit(EventArgs e) { base.OnInit(e); int listItemIds = 1; for (int i = 0; i < 10; i++) { var li = new HtmlGenericControl("li"); var lnk = new LinkButton(); lnk.ID = "lnk" + listItemIds; lnk.Text = "text" + i; lnk.Click += Clicked; //lnk.Command += new CommandEventHandler(lnkColourAlternative_Click); //lnk.Click li.Controls.Add(lnk); ul1.Controls.Add(li); listItemIds++; } } private void Clicked(object sender, EventArgs e) { var btn = sender as LinkButton; btn.Text = "Clicked"; } 

做这种事OnInit并确保在每次回发时重新创建控件。

有关示例,请参阅此知识库文章 – 有点过时,但方法仍然相同。