2012-01-12 34 views
0

我正在編寫一個應用程序,該應用程序基本上是連接到數據庫表的一個DataGrid,很好,很簡單。我使用LINQ到SQL,並通過一個簡單的綁定表:綁定到數據網格,在客戶端觸發數據庫更改

dGridd.ItemsSource = _dbcontext.TheTableObjects;

表成功地顯示了表,但是當我改變數據庫值外部DataGrid中沒有更新(例如,從MSSQL) 。我在這裏遵循了大部分指令:Simple Demo of Binding to a Database in WPF using LINQ-SQL,除了跳過ObservableCollection的使用(應該沒有區別,正確嗎?)。

當數據庫表的內容在外部發生更改時,我希望綁定更新(並因此更新數據網格)。本能地我對自己說:'這很愚蠢......客戶端應用程序怎麼可能知道數據庫內容,而沒有進行某種輪詢......'但是我再也不知道LINQ to SQL真的是多麼的模糊......

+0

你的直覺是正確的。你必須查詢。使用一個ObservableCollection添加,刪除三角洲情況下,它會自動傳播到DataGrid。 – 2012-01-12 15:46:29

+0

不應用程序除了顯示值之外還有其他操作嗎?如果需要使用其他按鈕/功能,那麼你需要在後臺執行輪詢。如果它是隻讀的,你可能希望使用ListView/GridView,因爲它比DataGrid更輕。你可能能夠使用CLR觸發器來獲取通知http://msdn.microsoft.com/en-us/library/ms131093.aspx。我說可能 - 我沒有發佈這個答案。 – Paparazzi 2012-01-12 16:05:41

+0

感謝您的回答,對不起在問題中提出另一個問題,但是:什麼是UI最少的干擾素g調查一個數據庫並填充網格的方式?目前,我只是更新'DispatcherTimer'中的'ObservableQueue',每當這種情況發生時,我感覺UI略微滯後。就應用程序響應速度而言,是否有更好的方法來實現這一點? – user989056 2012-01-13 09:09:52

回答

0

jberger提供了最佳答案。

你的直覺是正確的。你必須投票。使用一個ObservableCollection添加,刪除三角洲情況下,它會自動傳播到DataGrid」