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

cetgtptt  于 2022-12-15  发布在  .NET
关注(0)|答案(5)|浏览(224)

我尝试在www.example.com上动态创建一个按钮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);
jaxagkaj

jaxagkaj1#

阅读有关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

6kkfgxo0

6kkfgxo02#

我认为您试图在这里混合服务器端和客户端事件。
html属性OnClick是一个客户端,当用户点击按钮时,它会触发一段JavaScript。当用户点击按钮时,会发生服务器事件OnClick,它会发回服务器,这允许您将函数(服务器端)挂钩到该事件中。
您在寻找服务器端还是客户端?
要添加客户端事件,可以执行以下操作

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

要添加服务器端事件,可以执行以下操作

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

其中.MyMethod是一个已设置为处理服务器端按钮单击的方法。

pbgvytdp

pbgvytdp3#

如果我是对的,您可以在Page_Load中创建按钮。
如果是,请检查回发。

if(!postback)
{
   create your buttons.
}
9bfwbjaz

9bfwbjaz4#

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

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

然后调用IsPostBack块Page_Load()Event & out中的方法,如下所示

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

vktxenjb

vktxenjb5#

这应该可以达到目的:

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);
}

相关问题