【发布时间】:2011-05-01 06:32:20
【问题描述】:
我想在按钮单击事件上创建动态按钮(例如,btnCreateDynamic_Click)。 我尝试在 page_load 事件和 Pre_int 事件上创建动态按钮。它们都在工作,但我想在按钮单击事件中创建它们。我如何在 c# asp.net 中做到这一点?
【问题讨论】:
标签: c# .net asp.net dynamic controls
我想在按钮单击事件上创建动态按钮(例如,btnCreateDynamic_Click)。 我尝试在 page_load 事件和 Pre_int 事件上创建动态按钮。它们都在工作,但我想在按钮单击事件中创建它们。我如何在 c# asp.net 中做到这一点?
【问题讨论】:
标签: c# .net asp.net dynamic controls
您在客户端的按钮单击事件将导致页面回发,这将启动 ASP.Net 页面生命周期;
您在服务器上的按钮单击事件是 PostBackEvent,您应该能够使用在 Load 或 Init 事件中使用的相同方法调用 CreateMyButton()。
【讨论】:
一个想法是创建一个按钮列表,您可以在其中存储您在 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>();
myDynamicButtonsList 应存储在每次请求后可以检索到的位置。
编辑: 在页面加载中,您可能会遇到这样的情况:
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));
}
我没有测试它,但它应该可以工作。
【讨论】: