如何从数据网格中删除无效行
本文关键字:删除 无效 网格 数据网 数据 | 更新日期: 2023-09-27 18:06:45
应用程序结构说明:
语言为c#,使用WPF和MVVM模式。视图基本上是一个DataGrid,用于显示一些数据表值(通过ViewModel)。允许用户从网格中添加、编辑和删除行。由于从数据库中检索值并稍后插入,因此应用一些值限制(没有null,只有数字等)。可以直接对DataGrid进行数据修改,但也有一个单独的对话框用于编辑和添加新行。删除按钮的工作方式是ViewModel从DataTable中找到选定的DataGrid行,删除它们,并自动将更改更新到DataGrid。
问题:
所以我有这个问题,用户试图插入无效的数据到DataGrid和红色感叹号似乎表明插入的数据有问题(验证错误我猜?)。如果此时用户希望重新开始并选择要删除的无效行,则无法删除该行,因为它不存在于模型中,而只存在于DataGrid中。试图直接从DataGrid中删除无效的DataGridRow会抛出一个异常,指出DataGrid绑定到一个模型,并且应该在那里进行任何修改。
最后的问题:
如何删除模型中不存在的无效DataGridRow ?
如果你实现MVVM模式,那么你不需要做任何事情,除了将你的observablecollection中的变化链接到数据层以将其连接到DB。
也可以将DataGrid定义为:
<DataGrid ItemsSource="{Binding Items}" SelectedItem="{Binding ActiveItem}" .../>
然后你可以在你的代码中响应Items和ActiveItem的PropertyChanged事件,有点像
ActiveItem.PropertyChanged += ...
希望有所帮助