当我从代码后面添加Linkbutton时,click事件不会调用

时间:2012-11-28 06:29:34

标签: asp.net

我使用下面的代码在后面的代码中添加LinkButton但是当我点击每个链接按钮时,点击事件不会调用,但如果我删除if(!IsPostBack)正常工作

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            this.sr();
        }//if
    }

    void sr()
    {
        LinkButton lnk;
        for (int i =1; i < 6; i++)
        {
            lnk = new LinkButton();
            lnk.ID="lnk"+i.ToString();
            lnk.Text = i.ToString() + "&nbsp;&nbsp;&nbsp;&nbsp;";
            lnk.Click += new EventHandler(lnk_Click);
            this.pnl.Controls.Add(lnk);
 }
    }

    void lnk_Click(object sender, EventArgs e)
    {
        LinkButton lnk = (LinkButton)sender;
        lnk.Text = "Clicked";
    }

3 个答案:

答案 0 :(得分:0)

您正在动态创建 linkBut​​ton

你必须在 Page_Init 函数中调用sr(),如...

void Page_Init(object Sender, System.EventArgs e)
{
  sr();
}

Please check this

答案 1 :(得分:0)

在向页面动态添加控件时,必须在每次加载页面时添加它们。理想情况下,这应该在Page初始化事件中完成。当你删除!Page.IsPostBack条件时,这就是你的代码工作的原因。

答案 2 :(得分:0)

您的函数被调用两次,因为它包含在page_load和page_init中。 从page_load中删除它。 回发将始终查找发生的更改并尝试重新构建页面,以便每次都重建您的代码后面的控件。