这是我们强制ObjectDataSource到...的唯一方法吗?

时间:2009-08-11 18:45:45

标签: c# asp.net data-binding gridview objectdatasource

问候,


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 事件。但是如果在里面调用 DropDownList1.DataBind()怎么办? 的Page_Load()

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


感谢名单

1 个答案:

答案 0 :(得分:3)

在这种情况下,是否会在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

由于在prerender之前调用了load事件,并且在调用databind方法然后在你的情况下objectdatasource选择了在prerender之前触发的事件