繁体   English   中英

asp.net动态linkBut​​tons单击事件问题

[英]asp.net dynamic linkButtons click event problem

我在asp.net页面上有一个占位符和一个按钮。 单击按钮后,我希望几个LinkBut​​tons出现在我的占位符上,并且希望将specyfic处理程序连接到我的LinkBut​​tons的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);
        }

LinkBut​​tons将可见,但它们的事件不会触发。 我该如何解决? 我需要在Button_Click事件内生成LinkBut​​tons,因为只有这样我才知道要创建多少个按钮。 请帮忙。

好吧,我在编程的初期就遇到了第一个问题,让我想起了那些日子。...因为您试图动态创建/注入asp控件,而ASP.Net使用ControlState和ViewState来检索每个控件的状态控制回发后放置在页面上的位置。 在您的情况下,没有为您创建的每个LinkBut​​ton定义ControlState / ViewState,因为您实际上是动态创建它们的。

我认为解决此问题的简单方法是使用某些数据控件,例如Repeater / GridView,它们可以无缝处理ViewState问题。

另一种方法是探索和了解控制状态(有点复杂)。

瑞格斯

问题是您要在页面的初始呈现中添加LinkBut​​tons(当用户单击按钮时),但是当它回发时,尚未重新创建它们,因此页面没有任何内容可以绑定点击事件即可。 如果是回发,则需要在Page_Load方法中再次创建它们。 因此,您可能还需要存储一些用于确定如何在ViewState中创建LinkBut​​ton的信息,以便可以在Page_Load中重新创建它们。 完成此操作后,该控件将可用于该页面以将事件绑定到该控件,并且将调用您的处理程序。

当您单击创建的链接按钮时,它将回发页面。 在每个回发中,您必须重新创建linkbutton并重新绑定其事件处理程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM