我想在按钮点击事件上创建动态按钮(例如,btnCreateDynamic_Click)。 我尝试在page_load事件和Pre_int事件上创建动态按钮。他们都在工作,但我想在按钮点击事件中创建它们。我怎么能在c#asp.net中做到这一点?
答案 0 :(得分:2)
客户端上的按钮点击事件将导致页面回发,从而启动ASP.Net页面生命周期;
服务器上的按钮单击事件是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));
}
我没有测试过,但它应该可以工作。