【发布时间】:2013-06-08 00:13:21
【问题描述】:
我对 asp.net CompositeControls 很陌生...我有一个任务需要我在加载时添加一个 1 按钮,然后当用户单击它时,会添加另一个按钮,然后单击第二个按钮显示一个标签。
问题是点击第二个按钮后,页面回发完毕,整个页面回到初始状态,没有显示任何标签。所以第一个按钮点击会触发,但第二个事件不会。我什至创建了一个断点来检查,它没有访问“btn_submit2_Click”
test1Composite.cs:
using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace test1File
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:test1 runat=server></{0}:test1>")]
public class test1 : CompositeControl
{
protected Button btn_submit1;
protected Button btn_submit2;
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
protected override void CreateChildControls()
{
btn_submit1 = new Button();
btn_submit1.Text = "Click me!";
btn_submit1.Click +=new EventHandler(btn_submit1_Click);
this.Controls.Add(btn_submit1);
this.ChildControlsCreated = true;
}
protected void btn_submit1_Click(object sender, EventArgs e)
{
btn_submit2 = new Button();
btn_submit2.Text = "Click me!";
btn_submit2.Click += new EventHandler(btn_submit2_Click);
this.Controls.Add(btn_submit2);
}
protected void btn_submit2_Click(object sender, EventArgs e)
{
Label lbl_done = new Label();
lbl_done.Text = "Thank you :)";
this.Controls.Add(lbl_done);
}
}
}
默认.cs:
using System;
namespace test1File
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
test1 pl = new test1();
form1.Controls.Add(pl);
}
}
}
我在网上搜索并发现“可能”我需要覆盖 OnInit 但如果我放 CreateChildControls() 它没有帮助......也许我在这里做错了什么......任何帮助将不胜感激,谢谢。
【问题讨论】:
标签: c# asp.net composite-controls