C# 无法刷新数据网格
我有一个DataGrid,它在启动时加载数据。用户可以单击几个按钮。每个按钮更新同一列。问题是,保存该列的新值时,旧值仍显示在数据网格中。它必须刷新。我尝试了几种方法,如:t_klantedatagrid.Items.Refresh和CollectionViewSource.GetDefaultViewt_klantedatagrid.ItemsSource.Refresh。它们都不起作用 加载数据的代码:C# 无法刷新数据网格,c#,wpf,entity-framework,C#,Wpf,Entity Framework,我有一个DataGrid,它在启动时加载数据。用户可以单击几个按钮。每个按钮更新同一列。问题是,保存该列的新值时,旧值仍显示在数据网格中。它必须刷新。我尝试了几种方法,如:t_klantedatagrid.Items.Refresh和CollectionViewSource.GetDefaultViewt_klantedatagrid.ItemsSource.Refresh。它们都不起作用 加载数据的代码: OV.AOVDataSet aOVDataSet = ((AOV.AOVDataSet)
OV.AOVDataSet aOVDataSet = ((AOV.AOVDataSet)(this.FindResource("aOVDataSet")));
// Load data into the table t_Klanten. You can modify this code as needed.
AOV.AOVDataSetTableAdapters.t_KlantenTableAdapter aOVDataSett_KlantenTableAdapter = new AOV.AOVDataSetTableAdapters.t_KlantenTableAdapter();
aOVDataSett_KlantenTableAdapter.Fill(aOVDataSet.t_Klanten);
t_KlantenViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("t_KlantenViewSource")));
t_KlantenViewSource.View.MoveCurrentToFirst();
我使用实体框架。为什么这两种解决方案对我不起作用。是否有其他刷新DataGrid的解决方案?如果您看到该类型数据绑定的旧值,这意味着您不更新初始源,而只更新您案例中的临时源。对FindResource添加的数据调用Refresh方法会导致应用程序从预编译的资源重新加载该数据,在这种情况下不会更改 换句话说,问题是您使用预编译的资源 同时,用实际数据填充数据集,但数据集在内存中,请查看应用程序文件中的源代码 您可以尝试: 将整个datagrid或单独列的ItemsSource绑定到TableAdapter数据集 将资源编译行为更改为内容,这样每次调用Refresh方法时,应用程序都会从外部文件重新加载它。 补充: 为了节省时间,你可以为你的案件找一个合适的解决办法。检查执行更新的段落另一种方式是为每个绑定参数提供NotifyPropertyChanged事件,但我不能说在这种情况下更好,假设您通过唯一按钮更新列 简而言之,您需要在单击按钮/更改属性时使用如下方法:
aOVDataSett_KlantenTableAdapter.UpdateAvDataSet.t_Klanten按钮后,单击第一个将datagrid数据源设置为null,然后分配数据
datagrid.datasource=null
谢谢大家的回答。正如Jasmine所建议的,我重新加载了数据集并恢复了datagrid。也许这不是最好的方法,但这是我当时唯一的解决方案。过去我不得不重新加载数据集,并重新绑定网格。刷新数据集不会通知网格显示新数据。非常感谢您提供的解决方案。我对WPF和EF没有太多经验。如果您能提供一个给定解决方案的示例,我将不胜感激。好的,我得到了第二个解决方案。但当我尝试时,我会犯很多错误。Like无法初始化。然后请显示DataGrid的XAML,需要查看列数据绑定(如果有)