C#:从DataGridView到BindingList的更改推回到数据库?

时间:2011-01-11 00:17:18

标签: database winforms datagridview bindingsource bindinglist

我正在使用BindingList在Windows窗体应用程序的DataGridView中显示Person对象列表。对DataGridView的更改会更改基础BindingList。我已经完成了这部分工作。

现在我希望列表保持为数据库表。从数据库中读取列表并填充Person列表是直截了当的,但如果我从DataGridView添加/编辑/删除某个人,我将如何以及何时将该更改保留回数据库?

(其次,这种方法还可以,或者我错过了一些更大的图片?我不想使用数据表,因为我想以抽象的面向对象的方式使用我的代码。)

1 个答案:

答案 0 :(得分:1)

为了便于在Windows窗体中持久保存对象,您可以使用LINQ2SQL,它可以完全按照您的要求加上当您想要从数据库中收集对象时实现对象。

快速示例,在从数据库模式为受支持的数据库(即SQL Server(Express))创建linq上下文之后,您只需在表单中创建它的实例并在单原子操作期间使用它与数据 - 读取,编辑,写或取消。

  private YourAppContext context;

  private void RenewContext()
  {
     context = new YourAppContext();
  }

  private void LoadData()
  {
    RenewContext();
    DataGridView1.DataSource = context.Articles.OrderByDescending(x => x.DatePosted).Take(10);
  }

  private void AcceptButtonPressed()
  {
    context.SubmitChanges();
  }

  private void CancelButtonPressed()
  {
    LoadData();
  }

显然,您可以通过BindingSource传递数据。