问候,



1)我假设ObjectDataSource仅在第一次请求时才自动绑定到数据源,但不会在回发时绑定(否则ObjectDataSource.Selecting事件也会在回发时触发,但不是):

A)因此,强制ObjectDataSource也绑定回发的唯一方法是手动调用DataBind()?



2)假设DropDownList1的DataSourceID设置为ObjectDataSource1,则在第一次加载页面时,ObjectDataSource1将自动调用DropDownList1.DataBind()(在Page.PreRender事件之后)并插入检索到的数据。



A)但是如果我们在首次加载页面时也手动调用DropDownList1.DataBind()怎么办:

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack) DropDownList1.DataBind();
}



ObjectDataSource1是否会以某种方式注意到DropDownList1.DataBind()已经被调用,因此不会自动调用DropDownList1.DataBind()吗?



B)通常在Page.Prerender事件之后触发ObjectDataSource1.Selecting事件,但是如果在Page_Load()内部调用DropDownList1.DataBind()怎么办?

在那种情况下,是否会在Page.PreRender之前触发ObjectDataSource1.Selecting事件?



谢谢

最佳答案

在那种情况下,是否会在Page.PreRender之前触发ObjectDataSource1.Selecting事件?
是的,它在Page.PreRender之前被调用。
原因:每个设置了DataSourceID属性的数据绑定控件都会在prerender事件中调用其DataBind方法,

检查页面生命周期
http://msdn.microsoft.com/en-us/library/ms178472.aspx

http://dotnetshoutout.com/Data-Binding-Events-for-Data-Bound-Controls-in-ASPNet

由于load事件是在prerender之前调用的,因此在调用databind方法时,在您所处的情况下objectdatasource选择的事件在prerender之前触发

10-04 21:49