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