DataBind() in C#
本文关键字:in DataBind | 更新日期: 2023-09-27 18:13:50
我对实体框架和LINQ都很陌生。我以前使用过DataGridView,并将数据源设置为它
DataGridView1.datasource=dt; // dt=datatable
就足够了。但是在阅读ASP。Net book他们给出了使用实体框架的代码
using (PlanetWroxEntities myEntities = new PlanetWroxEntities())
{
var allGenres = from genre in myEntities.Genres
orderby genre.Name
select new { genre.Name, genre.Reviews };
GridView1.DataSource = allGenres;
GridView1.DataBind();
}
为什么最后使用这个DataBind()
。我看到DataBind()
的MSDN文档中说"(它)将数据源绑定到被调用的服务器控件及其所有子控件。"
如果我删除它,我得到一个错误"ObjectContext实例已被处置,不能再用于需要连接的操作。"
我很困惑,这个DataBind()
到底是做什么的?我也看到一些人使用数据绑定的DataGridView,我不知道为什么?
谢谢。
DataBind方法强制读取数据源并将其绑定到控件。由于您是在PlanetWroxEntities
上下文中进行数据绑定的,因此控件应该在PlanetWroxEntities
处理之前从数据源读取数据。也就是说:在数据库连接关闭之前。
另一种方法是通过调用.ToList()
方法来强制查询。这将DataSource
属性设置为包含具体数据的非延迟列表。
using (PlanetWroxEntities myEntities = new PlanetWroxEntities())
{
var allGenres = from genre in myEntities.Genres
orderby genre.Name
select new { genre.Name, genre.Reviews };
GridView1.DataSource = allGenres.ToList();
}