[英]asp.net dynamic linkButtons click event problem
我在asp.net页面上有一个占位符和一个按钮。 单击按钮后,我希望几个LinkButtons出现在我的占位符上,并且希望将specyfic处理程序连接到我的LinkButtons的click_event。
这是代码:
protected void Button_Click(object sender, EventArgs e)
{
for(...)
{
LinkButton l = new LinkButton();
l.ID = "link" + i;
l.Command += new CommandEventHandler(link_Command);
PlaceHolder1.Controls.Add(l);
}
}
void link_Command(object sender, CommandEventArgs e)
{
PlaceHolder1.Controls.Clear();
Label l = new Label();
l.Text = e.CommandArgument.ToString();
PlaceHolder1.Controls.Add(l);
}
LinkButtons将可见,但它们的事件不会触发。 我该如何解决? 我需要在Button_Click事件内生成LinkButtons,因为只有这样我才知道要创建多少个按钮。 请帮忙。
好吧,我在编程的初期就遇到了第一个问题,让我想起了那些日子。...因为您试图动态创建/注入asp控件,而ASP.Net使用ControlState和ViewState来检索每个控件的状态控制回发后放置在页面上的位置。 在您的情况下,没有为您创建的每个LinkButton定义ControlState / ViewState,因为您实际上是动态创建它们的。
我认为解决此问题的简单方法是使用某些数据控件,例如Repeater / GridView,它们可以无缝处理ViewState问题。
另一种方法是探索和了解控制状态(有点复杂)。
瑞格斯
问题是您要在页面的初始呈现中添加LinkButtons(当用户单击按钮时),但是当它回发时,尚未重新创建它们,因此页面没有任何内容可以绑定点击事件即可。 如果是回发,则需要在Page_Load方法中再次创建它们。 因此,您可能还需要存储一些用于确定如何在ViewState中创建LinkButton的信息,以便可以在Page_Load中重新创建它们。 完成此操作后,该控件将可用于该页面以将事件绑定到该控件,并且将调用您的处理程序。
当您单击创建的链接按钮时,它将回发页面。 在每个回发中,您必须重新创建linkbutton并重新绑定其事件处理程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.