【问题标题】:Wpf sort or crud on datagrid cause reset checkboxdatagrid 上的 Wpf 排序或 crud 导致重置复选框
【发布时间】:2022-12-31 19:57:41
【问题描述】:

我添加了具有复选框的列,当检查复选框时,我得到了选择的一些数字的平均值。

问题是当对数据进行排序或对数据库执行某些操作时,会导致所有复选框检查状态为 false。如何解决?

我知道的唯一方法是将该复选框作为布尔值存储在数据库中,每次运行程序时都将所有布尔值设置为 false。但这不是好办法。因为在大数据中导致程序的性能慢慢下降。

每次数据库更改时,此代码都会调用更新 DataGrid。

using DataContextTest dc=new();

DgTest.ItemsSource= dc.TestTable.ToList();

【问题讨论】:

  • 请分享代码隐藏逻辑。您如何对数据进行排序?你在使用 ObservableCollection<T> 吗?添加更多详细信息,以便有人可以帮助您。
  • 使用数据网格的列。按那个按钮然后排序。没有更多用于排序数据库的代码。

标签: c# wpf datagrid


【解决方案1】:

确保您使用的是 ObservableCollection,一旦必要的操作完成,将 SaveChages 保存到数据库。然后进行刷新或重新加载任何内容。看来,您正在重新加载数据,只要上下文还活着就没有必要。只需确保将集合的新状态保存到数据库(使用与加载数据相同的上下文) 我希望它有帮助

【讨论】:

  • 你能用例子解释一下吗?还有一件事我不想在数据库中保存复选框值我只是用它来接收来自该行的一些数据。 datagrid 排序后或发生任何导致 datagrid.itemssource 更改的事情。这导致复选框值的重置
  • 我是一个实体框架,MVVM 的家伙。好吧,如果你不想保存,没关系。你可能想在你的 viewModel 上创建一个替换集合。只需在加载时使用真实数据重新填充该“虚拟”集合,然后仅使用必要的列即可。您的 heckbox 布尔属性只会存在于您的虚拟集合中。你如何做实际上取决于你如何加载集合。如果您正在绑定复选框列,任何更改也会反映在您的收藏中。
  • 感谢您的帮助,但我从未在我的任何培训项目中使用 MVVM。因为我不知道如何使用 MVVM。我现在正在学习。所以我将我的样本添加到第一篇文章中。展示我如何使用 EF 进行 CRUD 和与 DataGrid 的绑定。
  • TestTable 需要有一个复选框的属性,它会记住排序后的状态。像这样绑定: IsChjecked="{Binding Path=yourcheckedpropertyname, UpdateSourceTrigger=PropertyChanged}" 顺便说一下,您还可以将 DataGrid 的 ItemsSource 设置为您拥有的那个集合。您也可以在代码或 xaml 中执行此操作
  • 谢谢。我知道。但是每次我打开程序时,我都必须将所有布尔值设置为 false。
猜你喜欢
  • 2011-04-20
  • 2016-01-13
  • 2017-05-26
  • 2018-06-24
  • 2010-11-29
  • 2019-06-09
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
相关资源
最近更新 更多