如何动态创建asp按钮并向其添加事件

时间:2012-07-09 10:47:53

标签: asp.net events c#-4.0 button

我正在尝试在asp.net上动态创建一个按钮,但我无法将事件添加到它。下面有什么错误或缺失?

提前致谢

$

    Button btn2 = new Button();
    btn2.ID = "btnEdit";
    btn2.Text = "Edit Member";
    btn2.Click += new EventHandler(btnEdit_Click);
    form1.Controls.Add(btn2);

我也尝试过这样:

$

    Button btn2 = new Button();
    btn2.ID = "btnEdit";
    btn2.Text = "Edit Member";
    btn2.Attributes.Add("OnClick","btnEdit_Click);
    form1.Controls.Add(btn2);

5 个答案:

答案 0 :(得分:0)

我认为您尝试在此处混合服务器端和客户端事件。

html属性OnClick是客户端,当用户点击按钮时,它会触发一段JavaScript 服务器事件OnClick发生在用户单击按钮并且它回发到服务器时,它允许您将功能(服务器端)挂钩到该事件中。

您在寻找服务器端还是客户端?

要添加客户端事件,您可以

btn2.Attributes.Add("onclick","my_javascript_function");

要添加服务器端事件,您可以执行

btn2.Click += new System.EventHandler(this.MyMethod); 

其中this.MyMethod是一个已经seutp处理服务器端按钮单击的方法。

答案 1 :(得分:0)

阅读有关asp.net webforms生命周期http://msdn.microsoft.com/en-us/library/ms178472.aspx的文章。每次加载页面时都必须创建/重新创建控件(例如OnLoad-Method)

http://www.asp.net/web-forms/videos/aspnet-ajax/how-to-dynamically-add-controls-to-a-web-page

答案 2 :(得分:0)

如果我是对的,你可以在Page_Load中创建按钮。

如果检查回发。

if(!postback)
{
   create your buttons.
}

答案 3 :(得分:0)

创建一个添加所有动态控件的方法,如下所示

public void AddControls()
{
    Button btn2 = new Button();
    btn2.ID = "btnEdit";
    btn2.Text = "Edit Member";
    btn2.Click += new EventHandler(btnEdit_Click);
    form1.Controls.Add(btn2);
}

然后在Page_Load()Event&中调用该方法。在 IsPostBack 块的一侧,如下所示

protected void Page_Load(object sender, EventArgs e)
{

    if (!IsPostBack)
    {

    }
    AddControls();
}

因为动态添加控件的视图状态不会在 Page_Load() evnt之前加载。请点击此链接获取更多信息http://msdn.microsoft.com/en-us/library/vstudio/hbdfdyh7(v=vs.100).aspx

答案 4 :(得分:0)

这应该可以解决问题:

case class Person