动态创建Button不调用事件c#

时间:2015-08-20 12:53:53

标签: c# asp.net

按钮不会调用它的事件。

在另一个按钮中调用:

placeHolder.Controls.Add(CreateButton());

创建按钮:

public Button CreateButton()
{
    Button btn = new Button();
    btn.ID = "id";
    btn.Text = "some text";
    btn.Attributes.Add("onclick", "return false;");
    btn.Click += new EventHandler(btn_Click);
    return btn;
}

功能性:

private void btn_Click(object sender, EventArgs e)
{
     // do something.
}

放置调试行来查找源,单击时根本不调用btn_Click()。有什么遗漏?

1 个答案:

答案 0 :(得分:4)

此代码可防止点击事件触发:

btn.Attributes.Add("onclick", "return false;");

删除此代码,或将其更改为:

btn.Attributes.Add("onclick", "return true;");

修改

我尝试了这段代码,但它运行正常。 PlaceHolder位于form标记中,runat属性位于server

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
        placeHolder.Controls.Add(CreateButton());
}

public Button CreateButton()
{
    Button btn = new Button();
    btn.ID = "id";
    btn.Text = "some text";
    btn.Click += btn_Click;
    return btn;
}

private void btn_Click(object sender, EventArgs e)
{

}