★★★疑惑:CreateChildControls(),为什么这个方法都会执行两次?!!!
在在创建组件的子控件时重载CreateChildControls()方法。
在追踪过程中发现除了第一次加载以外,触发子控件(例如button.click)事件后页面重新加载后,它都要执行两次,实在不解。恳请哪位大大解答~~,感谢。
protected override void CreateChildControls()
{
Controls.Clear();//清除所有现有的子控件
BuildControlHierarchy();//生成控件
base.CreateChildControls();
}
private void BuildControlHierarchy()
{
LinkButton msbtn = new LinkButton();
msbtn.Text = "Button";
msbtn.Click +=new EventHandler(msbtn_Click);
this.Controls.Add(msbtn);
}
private void msbtn_Click(object sender, EventArgs e)
{
}
问题点数:50、回复次数:2Top
1 楼saucer(思归)回复于 2004-08-03 04:39:04 得分 50
show more code? the following is ok
namespace MyControls
{
[ToolboxData("<{0}:MyList2 runat=server></{0}:MyList2>")]
public class MyList2 : System.Web.UI.WebControls.WebControl, INamingContainer
{
protected override void CreateChildControls()
{
Controls.Clear();
BuildControlHierarchy();
base.CreateChildControls();
}
private void BuildControlHierarchy()
{
LinkButton msbtn = new LinkButton();
msbtn.Text = "Button";
msbtn.Click +=new EventHandler(msbtn_Click);
this.Controls.Add(msbtn);
}
private void msbtn_Click(object sender, EventArgs e)
{
Page.Response.Write("button_clicked at " + DateTime.Now);
}
}
}
Top
2 楼Edison1024(留取钱财照汗青)回复于 2004-08-03 08:59:42 得分 0
谢谢哈~~
终于明白了,我在绑定时设置这个属性。
ChildControlsCreated = false;
通过将 ChildControlsCreated 属性设置为 false,可以使以前创建的任何控件树无效。这样在显示之前将重新创建控件树。Top




