2009-01-29 60 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來允許用戶直接進行更改。我一直覺得我的控制力不那麼強。我可能有一種輸入形式,用戶可以輸入新數據或編輯現有記錄,而不是直接編輯直接編輯數據庫的網格。