问候,
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之前触发