首页 > 解决方案 > 动态按钮的事件处理程序未触发

问题描述

所以,我这里有两件事。我有一个名为 MainButton 的静态按钮,它已经永久存在。MainButton 所做的是它动态创建一个下拉列表和另一个按钮(setButton)。但是,当我为 setButton 创建 onclickevent 时,它似乎没有触发。我已经看到了这个问题的几个例子,并意识到我必须使用 Page_Init 方法才能工作,但我不知道在我的代码中实现这个,我真的需要帮助。(对不起,我只是 ASP.NET 的初学者)

这是我的代码:


public partial class createTest : System.Web.UI.Page
{


  public DropDownList questionType = new DropDownList();
  string selectedQuestion;



    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected  void Page_OnInit(EventArgs e)
    {

    }

    private void setButton_Click(object sender, EventArgs e)
    {

        Debug.WriteLine("Test");


    }

    protected void mainButton_Click(object sender, EventArgs e)
    {

        ContentPlaceHolder mainContent = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolder1");

        questionType.Items.Add("MCQ");
        questionType.Items.Add("Open Ended");
        mainContent.Controls.Add(questionType);


        Create();
        selectedQuestion = questionType.SelectedValue;
        Debug.WriteLine(selectedQuestion);


    }

    void Create ()
    {
            ContentPlaceHolder mainContent = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolder1");
            Button setBtn;

            setBtn = new Button();
            setBtn.Text = "Set";
            setBtn.Click += new EventHandler(setButton_Click);
            mainContent.Controls.Add(setBtn);

    }
}

}


标签: c#asp.net

解决方案


您的问题出在回发、动态按钮和 asp.net 上不能很好地协同工作。我更喜欢添加按钮并将其设置为 visible="false" 并在单击时将其设置为 "true"。

如果您要添加多个按钮,则可以使用中继器。


推荐阅读