asp.net 页面加载时序

来源:百度知道 编辑:UC知道 时间:2024/06/15 07:46:38
我在设计一个页面的时候,用视图窗口,拖了一个DropDownList控件,然后绑定到一个ObjectDataSource数据源(返回Ilist<Type>),显示的是Type.Name,其真正的值是Type.Id ,能显示出来。
我想问下在设计窗口拖 的数据控件加载数据的时间和Load事件中的代码的执行时间,哪个在前面?
if (!IsPostBack)
{
int a=5;
this.ddlTypes.SelectedValue = a.toString(); //在这里通过设置断点来看的话,SelectedValue显示为null,赋值没有成功。也就是说现在ddltypes还没有执行绑定数据源的操作。那么在后面我页面加载完毕的时候,ddlTypes里面显示的项,却是5。这是为什么?

}
2L的回答postback是指页面回传?难道首次加载页面不是先执行load事件?

楼上歪解!
请勿误导他人!
Page_Load事件是在Postback后的第一个事件
然后才执行控件事件。
想详细知道网页执行细节,请参见System.Web.Compilation.PageBuildProvider类。
另类方法:可以在程序中添加断点,按F11按步调试,就可以看到事件顺序。

抱歉,的确错了!
会先执行Page_Load,然后执行SelectedIndexChanged
请先补充WebForm基本知识.
从基础学起,这样助于扩展.

问主,想没想过?你后台的事件程序类是个partial的类,另一半类在哪呢?是被System.Web.Compilation.PageBuildProvider读取自动生成的类。里面有控件的初始化之类的操作。
当页面第一次被请求时要先PreInit事件,然后Init事件,再Load。
当每次PostBack或CallBack后,会先调用Load事件,然后调用响应客户端触发的事件。
客户端的JS中有三个隐藏域,表示了你触发事件的按钮。传到服务端时才能调用相应的事件。
Page类我记得共有7个状态事件。可以去查一下。
而且,很显然,问主和楼上的基础语法根本不过关。
基础是一切的基石,荐通读《C#高级编程第六版》后再学ASP.NET。
《ASP.NET高级编程第五版》,仔细阅读。

如果你在DropDownList的SelectedIndexChanged事件中有代码的话,就会先触发这个事件,然后会load事件.不过你第一次打开的时候肯定是先load事件了

我说错了吗?