3

我正在尝试在 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);
4

5 回答 5

0

阅读有关 asp.net 网络表单生命周期的文章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

于 2012-07-09T10:58:24.783 回答
0

我认为您试图在这里混合服务器端和客户端事件。

html 属性OnClick是客户端,当用户单击按钮时,它会触发一段 JavaScript 服务器事件OnClick发生在用户单击按钮并将其回发到服务器时,这允许您将函数(服务器端)挂钩到那个事件。

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

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

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

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

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

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

于 2012-07-09T10:53:36.350 回答
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() 事件和IsPostBack块的外部调用该方法,如下所示

protected void Page_Load(object sender, EventArgs e)
{

    if (!IsPostBack)
    {

    }
    AddControls();
}

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

于 2014-08-30T09:42:21.137 回答
0

如果我是对的,您可以在Page_Load.

如果是检查回发。

if(!postback)
{
   create your buttons.
}
于 2012-07-09T11:56:16.977 回答
0

这应该可以解决问题:

protected void Page_Load(object sender, EventArgs e)
{
    Button b = new Button() { ID = "btnEdit", Text = "Edit Member" };
    b.Click += (sd, ev) => {
        // Do whatever you want to be done on click here.
        Button me = (Button)sd; // This creates a self-reference to this button, so you can get info like button ID, caption... and use, like this:
        me.Text = "Yay! You clicked me!";
    };
    form1.Controls.Add(b);
}
于 2015-10-14T20:37:45.443 回答