控件生命周期
初始化:Init 事件(OnInit 方法)
加载视图状态:LoadViewState
处理回发数据:LoadPostData 方法 (如果已实现 IPostBackDataHandler)
加载:Load 事件 (OnLoad 方法)
发送回发更改通知:RaisePostDataChangedEvent 方法(如果已实现 IPostBackDataHandler)
处理回发事件:RaisePostBackEvent 方法 (如果已实现 IPostBackEventHandler)
预呈现:PreRender 事件 (OnPreRender 方法)
保存状态:SaveViewState 方法
呈现:Render 方法
处置:Dispose 方法
卸载:UnLoad 事件(On UnLoad 方法)比如你在Page_Load里面创建控件,这时候控件的Page已经对本身的所有子控件调用了LoadViewState方法,而你这个创建的控件还没有创建出来,就没有调用LoadViewState了,当然他的ViewState就没有了,这时候你可以在控件创建好后调用一下LoadViewState有可能就可以了,不过我没有试过,一般动态创建的控件是把EnableViewState设置成False的。
初始化:Init 事件(OnInit 方法)
加载视图状态:LoadViewState
处理回发数据:LoadPostData 方法 (如果已实现 IPostBackDataHandler)
加载:Load 事件 (OnLoad 方法)
发送回发更改通知:RaisePostDataChangedEvent 方法(如果已实现 IPostBackDataHandler)
处理回发事件:RaisePostBackEvent 方法 (如果已实现 IPostBackEventHandler)
预呈现:PreRender 事件 (OnPreRender 方法)
保存状态:SaveViewState 方法
呈现:Render 方法
处置:Dispose 方法
卸载:UnLoad 事件(On UnLoad 方法)比如你在Page_Load里面创建控件,这时候控件的Page已经对本身的所有子控件调用了LoadViewState方法,而你这个创建的控件还没有创建出来,就没有调用LoadViewState了,当然他的ViewState就没有了,这时候你可以在控件创建好后调用一下LoadViewState有可能就可以了,不过我没有试过,一般动态创建的控件是把EnableViewState设置成False的。
protected override void CreateChildControls()
{
base.CreateChildControls ();
BuildModuleList(PlaceHolder1,ModName);
}
protected override void CreateChildControls()
{
base.CreateChildControls ();
BuildModuleList(PlaceHolder1,ModName);
}
private void BuildModuleList(Control parent, String Modules)
{
parent.Controls.Clear();
if (Modules == null)
return;
String [] ModuleList = Modules.Split(new char[] {';'});
for (int i=0;i<ModuleList.Length;i++)
{
String moduleSource = ModuleList[i];
if ((moduleSource != null)&&(moduleSource != "")&&(moduleSource != "System.DBNull"))
{
moduleSource=Request.ApplicationPath+moduleSource;
if (File.Exists(Server.MapPath(moduleSource)))
{
Control UIModule = Page.LoadControl(moduleSource);
parent.Controls.Add(UIModule);
UIModule.ID = "UIModule"+i.ToString();
UIModule.EnableViewState = true;
parent.Controls.Add(new LiteralControl("<br>"));
}
else
{
parent.Controls.Add(new LiteralControl("<Font color='Sliver'> 加载组件出错</font>"));
}
}
}
}
点击按钮后,TextBox里面输入数据还在,而DataGrid中以前绑顶的数据不翼而飞了~~~