c# - 这是我们可以强制 ObjectDataSource 的唯一方法吗?

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

问候,


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

A) 因此,强制 ObjectDataSource 也绑定(bind)回发的唯一方法是手动调用 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() ? p>


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

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


谢谢

最佳答案

在这种情况下,ObjectDataSource1.Selecting 事件会在 Page.PreRender 之前触发吗?
是的,它在 Page.PreRender 之前调用。
原因:每个设置了 DataSourceID 属性的数据绑定(bind)控件都会在预渲染事件中调用其 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 事件在预渲染之前触发

关于c# - 这是我们可以强制 ObjectDataSource 的唯一方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1262220/

相关文章:

c# - 合并两个表达式的结果

由 c# silverlight wcf mysql

c# - ImageButton 事件未在更新面板内触发

c# - 在我的C#客户端中接收意外的udp数据包

c# - .NET 中的谷歌图片搜索 API

.net - asp :GridView textbox always return blank value

javascript - 在 usercontrol 页面上打开时,jquery 对话框没有关闭

c# 如果我只需要一个表,我应该使用 DataSet 还是 DataTable?

jquery - 以编程方式将 Knockout 绑定(bind)应用于文本 block 中的特定标记

C# WPF 数据绑定(bind)复选框基于 MVVM 中的组合框选择