2

问候,


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

A)所以强制ObjectDataSource也绑定回发的唯一方法是手动调用DataBind()


2)假设DropDownList1DataSourceID设置为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) 通常ObjectDataSource1.Selecting事件在Page.Prerender事件之后触发。但是如果在Page_Load()中调用DropDownList1.DataBind( )怎么办?

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


谢谢

4

1 回答 1

3

在那种情况下,ObjectDataSource1.Selecting 事件会在 Page.PreRender 之前触发吗?
是的,它在 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

由于加载事件是在预渲染之前调用的,并且当调用 databind 方法时,在您的情况下,在预渲染之前触发了 objectdatasource selected 事件

于 2009-08-12T08:08:56.137 回答