两层用户控件嵌套时最里层CheckBox无法初始化状态的问题解决

结构如下:

调用页面test.aspx

      引用控件parent.ascx

            <dxwgv:ASPxGridView ......>

......

<Templates>
        <PreviewRow>

......

引用控件Sub.ascx

<asp:checkbox ......>......

</PreviewRow>
<EditForm> 

......

引用控件Sub.ascx

<asp:checkbox ......>......

</EditForm>  

</Templates> 

            </dxwgv:ASPxGridView>

 

开始尝试在Sub.ascx控件的Load、Init事件中初始化CheckBox的状态,到了test.aspx页面显示都失败

 

最后参考了搜索到的关于页面生命周期的讨论资料:

*********************************  
  user   control   is   loaded   in   OnInit  
  *********************************  
  in   Page:   OnInit  
  In   Page:   Loading   controls  
  in   Control:   OnInit  
  In   Page:   added   to   Controls  
  In   Page:   LoadViewState    
  in   Control:   LoadViewState  
  in   Control:   hidden   Value:    
  in   Control:   LoadPostData   Begin  
  in   Control:   hidden   Value:   Wed   Jul   9   23:32:38   EDT   2003  
  in   Control:   LoadPostData   End  
  In   Page:   OnLoad   after   base's   Onload.    
  in   Control:   after   base's   OnLoad  
  hidden   Value:   Wed   Jul   9   23:32:38   EDT   2003  
  in   Control:   RaisePostDataChange  
  In   Page:   OnPreRender    
  in   Control:   OnPreRender  
  hidden   Value:   Wed   Jul   9   23:32:38   EDT   2003  
  In   Page:   SavedViewState    
  in   Control:   SaveViewState  
   
  *********************************  
  User   Control   is   loaded   in   OnLoad  
  *********************************  
  in   Page:   OnInit  
  In   Page:   LoadViewState    
  In   Page:   OnLoad   after   base's   Onload.    
  In   Page:   Loading   controls  
  in   Control:   OnInit  
  in   Control:   LoadViewState  
  in   Control:   hidden   Value:    
  In   Page:   added   to   Controls  
  in   Control:   after   base's   OnLoad  
  hidden   Value:    
  in   Control:   LoadPostData   Begin  
  in   Control:   hidden   Value:   Wed   Jul   9   23:33:32   EDT   2003  
  in   Control:   LoadPostData   End  
  in   Control:   RaisePostDataChange  
  In   Page:   OnPreRender    
  in   Control:   OnPreRender  
  hidden   Value:   Wed   Jul   9   23:33:32   EDT   2003  
  In   Page:   SavedViewState    
  in   Control:   SaveViewState  

 

ASP.NET服务器控件的生命周期:
  1、初始化——Init事件(OnInit方法)
  2、加载视图状态——LoadViewState方法(当页面回发时,首先从_ViewSatae字段信息中加载该控件的状态)
  3、处理回发数据——LoadPostData方法
  4、加载——Load事件(OnLoad方法)
  5、发送回发更改通知——RaisePostDataChangedEvent方法
  6、处理回发事件——RaisePostBackEvent方法
  7、预呈现——PreRender事件(OnPreRender方法)
  8、保存视图状态——SaveViewState方法
  9、呈现——Render方法
  10、处置——Dispose方法
  11、卸载——UnLoad事件(OnUnLoad方法)

 

开始尝试在Sub.ascx的PreRender事件或重写SaveViewState方法处理,第一次显示可以,但是点击新增或修改后不再出发这些方法或事件,还是失败了。

 

最终解决办法是重写Sub.ascx的Render方法(在该方法中初始化),测试通过。
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值