0

我的场景如下:

我正在使用 EF4 并使用 linq。我有一个绑定到 ICollectionView 的数据网格(因为我使用过滤),如下所示:

view = CollectionViewSource.GetDefaultView(lstOrdsRlsd);
                if (lstOrdsRlsd.Count > 0)
                {
                    dgRecords1.ItemsSource = view;
                }

其中 lstOrdsRlsd 是一个可观察的集合。

我的问题是:

当数据库中的某些内容发生更改(无论是添加新行还是更改一条记录的某些属性等)时,我需要刷新数据网格。

我试过datagrid.Items.Refresh()哪个没有用。在这种情况下我可以使用 INotifyPropertyChanged 吗?有人可以提供一些有关如何实现此功能的示例代码吗?

谢谢

4

2 回答 2

0

数据库中的新行不会自动反映在您的应用程序中。您需要从数据库手动请求新项目并将它们添加到您的集合中。

于 2013-02-07T12:46:38.370 回答
0

您可以尝试使用 DbSet<>.Local 属性。这是一个可观察的集合,其中包含您从数据库上下文中查询的所有行。

public ObservableCollection<T> DbSet<T>.Local

因此,如果您稍后进行任何查询,并且返回更多行,则 DbSet<>.Local 集合将为您提供 INotifyCollectionChanged。:)

因此,下一步是确保 EF 获取新行。您可以使用 Daniel Hilgarth 回答中的任何内容来实现这一点。

于 2013-02-07T13:07:36.453 回答