2009-01-29 95 views
0

我有一个DataGridView控件在我正在使用的WinForms应用程序中。还原DataGridView中的更改?

的数据源设置为IQueryable的,我从我们的服务层获得:

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

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

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

当然有这种明显的解决方案,我的WinForms的无知显示(这是我在任何的WinForms首次尝试。)

用于恢复更改一个DataGridView有什么建议?

感谢您的帮助!

伊恩

回答

0

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

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