page_load 事件与 ObjectDataSource的Selecting 事件倒底谁先执行?
以前,对全局的变量赋值一般都是放在PAGE_LOAD中,
比如:
public CityModel city;
protected void Page_Load(object sender, EventArgs e)
{
city = (CityModel)Session["City"];
}
然后如果下面中的一个ObjectDataSource的Selecting再作调用
比如:
protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
e.InputParameters["CityId"] = city.CityId;
}
也倒是一直没有出过错。
不过,今天先写了一个页面。大体上也和上面差不多,不过多了一个button_onclick事件,而且这个button事件与全局变量
一点关系也都没有,并且也和databound也没有关系。
一次打开页面时正常,但当按了button后 postback的时候就报错了,报错的地方是在ObjectDataSource1_Selecting
说 city 为 null
但明明我是在page_load中初始化的啊,而且也没有加if(!ispostback)语句。
后来我单步跟踪,发现居然ObjectDataSource1_Selecting先于page_load事件,晕了!
为了解决问题,我不得不把city = (CityModel)Session["City"];
放在了 void OnInit(EventArgs e)事件中。
从而才不报错了,
但一直想不明白为什么,之前我一直是认为page_load是先于数据绑定的啊,
请大侠们赐教!!!解开小弟中的疑惑!谢谢了!