Asp.net分页控件动态加载(2)
后台代码文件也比较简单:
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翻页事件。
我认为对于多控件的互操作,清楚事件的执行顺序是很重要的,另外也有助于优化程序提高性能。
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。