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() in C#

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();
}