2012-07-09 65 views
3

我想在asp.net上动态地创建一个按钮,但我无法将事件添加到它。以下哪项错误或缺失?如何动态创建一个asp按钮并向它添加事件

在此先感谢

$

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); 
+2

你得到一个异常还是什么?你在哪里创建按钮,你是否在page_init/page_load的回发中重新创建它? – 2012-07-09 10:49:16

+0

该按钮是在DropDownList中的SelectedItem改变时创建的。创建按钮并将其添加到窗体上是没有任何错误的。我在页面上用我想要的css来获取按钮。但是,当我点击它时,没有任何移动,并且当我将一个断点放到空白处时“ btnEdit_Click“,它没有命中...... – 2012-07-09 10:55:43

回答

-1

我想你想在这里混的服务器端和客户端事件。

的HTML属性OnClick是一个客户端,当用户点击它会触发一段JavaScript代码 服务器事件OnClick当用户点击一个按钮,它回发到服务器,它允许你发生的按钮挂钩功能(服务器端)进入该事件。

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

要添加一个客户端事件,你可以做

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

要添加服务器端事件,你可以做

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

凡this.MyMethod是一种方法已经seutp来处理服务器端按钮点击。

+1

我正在寻找一个服务器端点击事件。一个asp按钮的属性”OnClientClick“为客户端事件... – 2012-07-09 10:57:21

0

如果我是正确的,你在Page_Load创建按钮。

如果是检查回传。

if(!postback) 
{ 
    create your buttons. 
} 
+0

伙计们我没有问题创建按钮并使其在页面上保持稳定。在下拉列表中选择项目时,我的按钮只出现一次。问题是我无法在.cs文件中将事件注册到按钮。并注意到我的按钮是一个asp:按钮,所以“OnClick”属性不适合客户端... – 2012-07-09 12:06:37

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_Lo ad() evnt。通过这个链接了解更多信息http://msdn.microsoft.com/en-us/library/vstudio/hbdfdyh7(v=vs.100).aspx

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); 
} 
相关问题