Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法刷新数据网格_C#_Wpf_Entity Framework - Fatal编程技术网

C# 无法刷新数据网格

C# 无法刷新数据网格,c#,wpf,entity-framework,C#,Wpf,Entity Framework,我有一个DataGrid,它在启动时加载数据。用户可以单击几个按钮。每个按钮更新同一列。问题是,保存该列的新值时,旧值仍显示在数据网格中。它必须刷新。我尝试了几种方法,如:t_klantedatagrid.Items.Refresh和CollectionViewSource.GetDefaultViewt_klantedatagrid.ItemsSource.Refresh。它们都不起作用 加载数据的代码: OV.AOVDataSet aOVDataSet = ((AOV.AOVDataSet)

我有一个DataGrid,它在启动时加载数据。用户可以单击几个按钮。每个按钮更新同一列。问题是,保存该列的新值时,旧值仍显示在数据网格中。它必须刷新。我尝试了几种方法,如:t_klantedatagrid.Items.Refresh和CollectionViewSource.GetDefaultViewt_klantedatagrid.ItemsSource.Refresh。它们都不起作用

加载数据的代码:

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,需要查看列数据绑定(如果有)