如何在按钮单击事件(C sharp ASP.NET)上创建动态按钮?

时间:2010-10-27 11:35:35

标签: c# .net asp.net dynamic controls

我想在按钮点击事件上创建动态按钮(例如,btnCreateDynamic_Click)。 我尝试在page_load事件和Pre_int事件上创建动态按钮。他们都在工作,但我想在按钮点击事件中创建它们。我怎么能在c#asp.net中做到这一点?

2 个答案:

答案 0 :(得分:2)

客户端上的按钮点击事件将导致页面回发,从而启动ASP.Net页面生命周期; alt text

服务器上的按钮单击事件是PostBackEvent,您应该可以使用在Load或Init事件中使用的相同方法调用CreateMyButton()

答案 1 :(得分:1)

一个想法是创建一个按钮列表,您可以在其中存储您在btnCreateDynamic_click中创建的按钮。

您可以使用以下方法:

private Button CreateButton(string id, string name)
        {
            Button b = new Button();
            b.Text = name;
            b.ID = id;
            b.Click += new EventHandler(Button_Click);
            b.OnClientClick = "ButtonClick('" + b.ClientID + "')";
            return b;
        }

在btnCreateDynamic_click中你可以有类似的东西:

Button b = CreateButton("dinamicBtn"+myDinamicButtonsList.Count.ToString(),"dinamicBtn"+myDinamicButtonsList.Count.ToString());
myDinamicButtonsList.add(b);

并在pageLoad例如,您可以执行类似

的操作
foreach(button btn in myDinamicButtonsList){
    form1.Controls.Add(btn));
}

List<Button> myDinamicButtonsList = new List<Button>();

myDinamicButtonsList应存储在每个请求后可以检索到的位置。

修改: 在页面加载中你可以有这样的东西:

if(Session["myDinamicButtons"] == null){
    List<Button> myDinamicButtonsList = new List<Button>();
    Session["myDinamicButtons"] = myDinamicButtonsList;
}

foreach(Button btn in Session["myDinamicButtons"] as List<Button>){
    form1.Controls.Add(btn));
}

我没有测试过,但它应该可以工作。