2012-01-12 47 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”

相关问题