IDC选择器 UserControl OnInit PreRender 生命周期
之前的选择器由于用户体验不爽。要点一下小书才能弹出窗口,在弹出的窗口中选择IDC。由于IDC资源关系是包含关系,做成了树状(小声说一下,为了异步,花了不少心思。后来改成了mztree,还没正式放上去)。
其实用户只要联动的下拉列表就行了,最后我也接受了,因为,如果你要选多个IDC资源的时候还是得用我以前的选择器。这么想着心里也舒坦了(可怜的程序员)。
用户控件没啥好说的了,但是有一个地方要注意。
一般人喜欢在UserControl的PageLoad中做些绑定的工作,我就是在这里头绑定片区列表和IDC列表。
而一般人也喜欢在主页中(用到UserControl的页)的PageLoad中调用UserControl的某些方法(比如说在信息的修改页中绑定选中的片区和IDC)。
由于主页的PageLoad是在UserControl的PageLoad之前执行的,所以当在主页中调BindSelected的时候还未绑定片区列表和IDC列表,这时候就会找不到值。
所以将绑定片区列表和IDC列表的工作移到UserControl的OnInit方法中。
另外,就是呈现方面的一个问题。
我的UserControl需提供一个Enabled和ShowArea(是否显示片区),ShowIDC(是否显示IDC)等属性。之前也是习惯性的将它们写在PageLoad中,结果发现在主页的某个按钮中改变了UserControl的Enabled值后,并没有立即在页面中呈现出来(要等到下一次回发)。原因是:主页的按钮回发事件发生后,不会再触发UserControl的PageLoad。于是将这段代码放入UserControl的OnPreRender中就OK了。
算是简单的实践了控件的生命周期(以前是看了也白看:)自己好才是真的好)。
OnInit --> 主页PageLoad-->UserControl's PageLoad --> PostBackHandler -->PreRender
OnInit/OnPreRender
![](/Images/OutliningIndicators/None.gif)
页面加载时绑定片区和机房BindData()
其实用户只要联动的下拉列表就行了,最后我也接受了,因为,如果你要选多个IDC资源的时候还是得用我以前的选择器。这么想着心里也舒坦了(可怜的程序员)。
用户控件没啥好说的了,但是有一个地方要注意。
一般人喜欢在UserControl的PageLoad中做些绑定的工作,我就是在这里头绑定片区列表和IDC列表。
而一般人也喜欢在主页中(用到UserControl的页)的PageLoad中调用UserControl的某些方法(比如说在信息的修改页中绑定选中的片区和IDC)。
由于主页的PageLoad是在UserControl的PageLoad之前执行的,所以当在主页中调BindSelected的时候还未绑定片区列表和IDC列表,这时候就会找不到值。
所以将绑定片区列表和IDC列表的工作移到UserControl的OnInit方法中。
另外,就是呈现方面的一个问题。
我的UserControl需提供一个Enabled和ShowArea(是否显示片区),ShowIDC(是否显示IDC)等属性。之前也是习惯性的将它们写在PageLoad中,结果发现在主页的某个按钮中改变了UserControl的Enabled值后,并没有立即在页面中呈现出来(要等到下一次回发)。原因是:主页的按钮回发事件发生后,不会再触发UserControl的PageLoad。于是将这段代码放入UserControl的OnPreRender中就OK了。
算是简单的实践了控件的生命周期(以前是看了也白看:)自己好才是真的好)。
OnInit --> 主页PageLoad-->UserControl's PageLoad --> PostBackHandler -->PreRender
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)