2、页面的InitComplete事件 3、页面的PreLoad事件 4、页面的Page_Load事件 5、页面的LoadComplete事件 6、控件里面的CreateChildControls Render事件 而当回发的时候(也就是表单提交后),事件的执行顺序就有些差别 1、页面的Oninit事件 2、页面的InitComplete事件 3、控件里面的CreateChildControls 7、页面的LoadComplete事件 8、页面的SaveStateComplete事件 9、页面里的Render事件 这里最郁闷的就是在回发的时候,控件里面的CreateChildControls 究其原因就是在回发的时候,控件里面的CreateChildControls事件的执行顺序前移造成的。
先举一个简单的例子吧,我们建立一个复合控件,在CreateChildControls()里面添加两个控件,一个是Label,一个是LinkButton。 public class EventTest : WebControl, INamingContainer { protected override void CreateChildControls protected override void CreateChildControls() { Label lbl = new Label(); protected override void CreateChildControls() { //省略。。。 this.FindControl("lbl"); lbl.Text += "自己的事件:" + Index; } protected override void CreateChildControls
这样使得复合控件下的子控件都根据各自的层级关系生成唯一的客户端标识 不至于产生重复的ID 组合控件比较重要的方法是: 1.EnsureChildControls 此方法判断属性ChildControlsCreated是否为true 如果不是将执行下面的事件 2.CreateChildControls 此方法创建并生成组合控件下的所有子控件 此方法执行完后应该设置ChildControlsCreated属性为true 避免重复调用CreateChildControls 我写了一个生成组合控件的类 HtmlTextWriterTag.Div; } } //在此方法中创建子控件 protected override void CreateChildControls HtmlTextWriter writer) { EnsureChildControls();//如果ChildControlsCreated不为true则调用CreateChildControls
return _EventList; } set { _EventList = value; } } protected override void CreateChildControls () { base.CreateChildControls(); //创建一个文本框 txt.ID = "Txt_Test 调用的部分比较简单,直接在CreateChildControls()里面就调用了。 实现了几个功能: 1、在控件内部调用了外部的方法。 2、外部设置的属性可以传递到控件内部。
this.ManagerPageSQL.CreateSQL();
//绑定第一页的数据
myDataBind(1);
}
#endregion
绘制UI CreateChildControls ()#region 绘制UI CreateChildControls()
/**////
CreateControlStyle ApplyStyleSheetSkin OnInit TrackViewState Page_Load OnLoad EnsureChildControls CreateChildControls
StiShowLogoToolButton(viewer); if (viewer.ShowLogoButton) AddControl(showlogoButton); } 然后在CreateChildControls
blog_4c9da9b50100r4u7.html http://book.51cto.com/art/200902/108836.htm 在设计模式下,控件生命周期的所有方法并不是都执行的,比如CreateChildControls
protected override void CreateChildControls() { base.CreateChildControls();
protected override void CreateChildControls() { base.CreateChildControls(); ScriptManager sm
然后我们就可以在 CreateChildControls 里面通过BaseColumnsInfo的信息来进行表格绘制和加载子控件了。 protected override void CreateChildControls() { base.CreateChildControls();
script>\n"); return builder; } #endregion protected override void CreateChildControls
/usr/bin/python3 """ Microsoft SharePoint Server DataFormWebPart CreateChildControls Server-Side Include Vulnerability Analysis: Inside of the Microsoft.SharePoint.WebPartPages.DataFormWebPart we can observe the `CreateChildControls [SharePointPermission(SecurityAction.Demand, ObjectModel = true)] protected override void CreateChildControls viewContext.RedirectIfNecessary(); } } } base.CreateChildControls
OnPreInit OnInit TrackViewState OnInitComplete OnPreLoad OnLoad OnLoadComplete EnsureChildControls CreateChildControls
protected override void CreateChildControls() { base .CreateChildControls(); ScriptManager
CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern); SetLanguage(); } protected override void CreateChildControls
本次毕业设计中对三级菜单都做了自定义,由于篇幅原因,就只对实现第三级菜单的功能进行介绍,自定义FeatureContextMenu: 在重载过的CreateChildControls成员函数中对第三级菜单进行外观设置