为什么DataBind()方法是必需的?

Jos*_*dan 17 asp.net data-binding

简单的问题,我想.

很长一段时间,我在编程方式数据绑定ASP.NET控件时盲目地遵循(据称)常见模式.即:

gridView1.DataSource = someList;
gridView1.DataBind();
Run Code Online (Sandbox Code Playgroud)

但是,如果我通过DataSourceID属性将GridView设置为绑定到DataSource 控件,则不需要调用DataBind().即:

gridView1.DataSourceID = LinqDataSource1;
Run Code Online (Sandbox Code Playgroud)

足够了.

此外,如果您尝试在ASPX标记中设置DataSource属性,则会遇到以下问题:

您不能以声明方式设置DataSource属性.

我认为这些是相关的,但我仍然难以理解为什么DataBind()是必要的.DataSource和DataSourceID之间的区别是次要的 - 我可以理解那里发生的一些魔术.真正的问题是为什么DataSource propery setter不能自动导致数据绑定?是否有任何我们想要设置DataSource但不绑定它的场景?

Joe*_*orn 17

在ASP.Net中,通常很重要的是在页面生命周期的某些点上提供某些数据并准备就绪,而不是之前.例如,您可能需要提前绑定到下拉列表以允许稍后在该列表上设置所选索引.或者您可能需要等待一段时间来绑定该大型网格,以减少保持该连接活动的时间/将数据保留在内存中.

明确调用该.DataBind()方法后,可以支持频谱两端的场景.

  • 你能解释一下后来绑定如何导致更短的时间将数据保存在内存中吗?我假设一个简单的Collection保存在内存中(如上所述,如果someList是List <object>)没有区别,但是它对于更复杂的东西有什么作用?是否延迟评估?一个例子就是优秀的. (2认同)