ASP.NET动态加载控件的"追赶论"

王朝asp·作者佚名  2008-12-13
窄屏简体版  字體: |||超大  

当初我实现这个的时候也是相当郁闷,老是丢失值,于是我就用Visable来解决(是加载WebControl)。以下是其他人的解决方案,蛮有参考价值的。

引用 随心所欲

http://www.cnblogs.com/dlwang2002/archive/2006/12/07/585093.html

结论就是:

1:在特定的时刻加入该控件的定义。至少在Page_Load以前,我用的Page_Init。晚了就执行不了了

2:该控件的id必须一致。因为状态的恢复是根据控件id来完成的。

3:Rebuild的时候一定不要调用子控件的初始化的函数,这样会浪费时间。

问题:可不可以通过设置UserControl的IsPostBack属性来达到一种和Page类似的处理方式呢?这样在UserControl里面就可以使用if(!IsPostBack)来做一些数据初始化了。

引用 Cat Chen

我有写过《深入理解ASP.NET动态控件》的系列文章,你可以去看看有没有值得参考的内容:

http://www.cnblogs.com/cathsfz/archive/2006/10/31/545521.html

http://www.cnblogs.com/cathsfz/archive/2006/11/05/550985.html

http://www.cnblogs.com/cathsfz/archive/2006/11/19/564929.html

关于追赶加载也详细解释了,并非0~n步都会在追赶加载中执行,只有特定的步骤会执行。如果控件已经加载完第k步,添加到另一个加载完第n步的控件中,则仅执行(k+1)~n步,前面的不会重复执行。

至于UserControl的加载很费时,这是你无法绕过去的。如果你的意思是,页面默认加载UserControlA,发生事件后要丢弃UserControlA改为加载UserControlB,浪费了时间在加载UserControlA上。以现在的ASP.NET页面生存周期模型,我们无法解决这个问题,你改进后的解决方案也还是要先加载默认的UserControlA。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航