【问题标题】:Is this the only way we can force ObjectDataSource to…?这是我们可以强制 ObjectDataSource ……的唯一方法吗?
【发布时间】:2010-11-18 17:35:30
【问题描述】:

您好,


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() 吗? p>


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

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


感谢

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我假设如果第一次加载页面我们手动调用 DropDownList1.DataBind()(在 Page_Load() 内部),那么 DropDownList1 不会在 PreRender 事件中再次调用 DataBind()?!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2014-01-29
    相关资源
    最近更新 更多