asp.net调用按钮单击我创建的事件

时间:2012-02-20 15:44:33

标签: c# asp.net event-handling ispostback

我正在asp.net中编写一个Web应用程序。 我有一个aspx页面调用类(测试)生成一个按钮并返回按钮。 类构造函数获取按钮单击事件应激活的函数(userClickOnButton)  和 插入button.click + = EventHandler(“函数名称(userClickOnButton)”);

问题是在aspx后面的代码我使用IsPostBack(不能把它取下来,需要这个条件)当我点击按钮时,progrem没有进入我为按钮创建的事件,但当我采取关闭IsPostBack条件,程序会转到我创建的事件(函数userClickOnButton)。

我的代码是: aspx代码背后

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Test test = new Test(userClickOnButton);
        Button button = test.AddButton();
        cell.Controls.Add(button);
    }
}

private void userClickOnButton(object sender, EventArgs e)
{
    this.ModalPopupExtenderSelectFilds.Show();
}

我的班级

public class Test
{

Action<object, EventArgs> m_ButtonClickActivateFunction;

public Test(Action<object, EventArgs> func) 
{
    m_ButtonClickActivateFunction = func;
}

public Button AddButton()
{
    Button button = new Button();
    button.Text = "select";
    button.ID = "buttonID";
    button.Click += new EventHandler(m_ButtonClickActivateFunction);

    return button;
}

需要帮助才能在不取出IsPostBack条件的情况下激活事件

感谢

1 个答案:

答案 0 :(得分:1)

我认为asp.net不会处理不再存在的按钮的点击。由于在回发时您没有重新创建按钮,因此该按钮不再存在于页面的控件集合中,因此不会处理该事件。

事件的处理发生在Page_Load之后,因此Page_Load应该重新创建按钮。

请看这里:Asp.Net Page Life Cycle