Asp.net分页控件动态加载(2)

分类: asp.net   出处:iocblog整理  更新时间:2009-06-26   添加到收藏  

    后台代码文件也比较简单:

namespace aspnetpaging

{

     public class aspnetcommonpaging : system.web.ui.page

     {

         protected system.web.ui.webcontrols.placeholder placeholder1;

 

         private void page_load(object sender, system.eventargs e)

         {

              placeholder1.controls.add(page.loadcontrol("~/pagingcontrol.ascx"));

         }

         #region web 窗体设计器生成的代码

         override protected void oninit(eventargs e)

         {

              initializecomponent();

              base.oninit(e);

         }

         /// <summary>

         /// 设计器支持所需的方法 - 不要使用代码编辑器修改

         /// 此方法的内容。

         /// </summary>

         private void initializecomponent()

         {

              this.load += new system.eventhandler(this.page_load);

         }

         #endregion

     }

}

    这里的placeholder1.controls.add(page.loadcontrol("~/pagingcontrol.ascx"));就是把pagingcontrol用户控件载到当前页面上来。如果不想用placeholder,我们也可以使用其他容器控件,只要添加到controls集合就行了。

    注意这里如果按下面这样处理,那面在页面回发的时候就会不被加载,那么也就不会触发分页事件。

private void page_load(object sender, system.eventargs e)

{

     if(!page.ispostback)

         placeholder1.controls.add(page.loadcontrol("~/pagingcontrol.ascx"));

}

    现在让我们来看看主要事件的执行顺序:设置断点,得到下面的顺序。

    第一次:页面oninit事件-->页面page_load事件à控件oninit事件à控件page_load事件。

    翻页回发:页面oninit事件-->页面page_load事件à控件oninit事件à控件page_load事件à lbtnnavigation_click翻页事件。

    如果我们把页面加载代码放在页面oninit事件:

override protected void oninit(eventargs e)

{

     initializecomponent();

     placeholder1.controls.add(page.loadcontrol("~/pagingcontrol.ascx"));

     base.oninit(e);

}

    那么事件的执行顺序会是什么样呢?

    第一次:页面oninit事件-->控件oninit事件à页面page_load事件à控件page_load事件。

    翻页回发:页面oninit事件-->控件oninit事件à页面page_load事件à控件page_load事件à lbtnnavigation_click翻页事件。

    我认为对于多控件的互操作,清楚事件的执行顺序是很重要的,另外也有助于优化程序提高性能。

上一页 [1] [2]



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。