我创建代码后面的页面按钮onclick函数无效

时间:2017-07-15 21:04:57

标签: c# asp.net webforms

我使用asp.net WebForms从后面的代码页手动创建了按钮。 这是创建代码:

                    Button myButton = new Button();
                    myButton.ID = "b" + arrcodes[i];
                    myButton.Text = "Buy Now!";
                    myButton.CssClass = "btn-primary";     
                    myButton.Click +=  new EventHandler(myButton_Click);
                    myPlaceHolder.Controls.Add(myButton);

我用谷歌搜索了如何在stackoverflow中添加onClick函数和使用的方法。但是这种方法不起作用..函数" myButton_Click"按下按钮时没有激活。

protected void myButton_Click(object sender, EventArgs e)
        { // my code }

我做错了吗?

2 个答案:

答案 0 :(得分:1)

您需要在回发中重新加载动态创建的按钮,并在Page_InitPage_Load事件中使用相同的ID。

否则,它不会出现在控制树中,并且无法触发Click事件。

例如,

public partial class Default : System.Web.UI.Page
{
    protected void Page_Init()
    {
        CreateButton();
    }

    protected void myButton_Click(object sender, EventArgs e)
    {
    }

    private void CreateButton()
    {
        Button myButton = new Button();
        myButton.ID = "b1";
        myButton.Text = "Buy Now!";
        myButton.CssClass = "btn-primary";
        myButton.Click += new EventHandler(myButton_Click);
        myPlaceHolder.Controls.Add(myButton);
    }
}

答案 1 :(得分:0)

通常,更好的选择是创建按钮并切换它的可见性。

如果您确实需要动态创建它,请确保在OnInit方法中创建按钮以使事件处理程序正常工作。