还原DataGridView中的更改?

时间:2009-01-29 03:17:26

标签: c# winforms linq-to-sql

我正在使用的winforms应用程序中有一个DataGridView控件。

DataSource设置为我从服务层获得的IQueryable:

dataGridView1.DataSource = (from c in _customerService.GetAll() select c);

在我正在处理的示例中,我有一个取消按钮,我希望用它来还原更改。如果他们点击取消,我不会调用DataContext.SubmitChanges()并关闭表单。但是,当我重新打开表单时,DataGridView中显示的数据反映了我在点击取消之前对上一个表单所做的更改。

当我关闭程序并再次运行时,一切都很好。所以我相信我正在更改绑定到DataGridView的集合中的数据。

肯定有一个明显的解决方案,我对winforms的无知表现出来(这是我对任何winforms的第一次尝试。)

有关将更改还原为datagridview的任何建议吗?

感谢您的帮助!

伊恩

1 个答案:

答案 0 :(得分:0)

我相信你必须再次访问数据库才能检索数据。这意味着,如果您发现用户决定取消更改,则必须返回数据库并获取新的IQueryable。由于Linq to Sql的工作方式,您只能枚举一次该集合。因此,如果您只想恢复到更改,则不能,因为它无法再次枚举它。

就个人而言,我可能不会使用DataGridView来允许用户直接进行更改。我总觉得我不那么控制。我可能有某种输入形式,用户可以输入新数据或编辑现有记录,而不是让他们直接编辑直接编辑数据库的网格。