在WPF中过滤后编辑DataGrid

我有一个DataGrid绑定到ObservableCollectionDataRowView

当我执行任何操作(如插入/删除/复制/粘贴/撤消/重做)时,我将操纵底层的数据源。

例如:当我必须将数据粘贴到一组单元格中时,我将获得它们的行和列索引(上下文菜单所指向的单元格)并编辑数据源。我存储它们的先前值和索引以在执行“撤消”操作时还原。

当我过滤网格时,视图将更改为与数据源相同的位置。因此,当我执行粘贴操作时,得到的索引与数据源中的索引不匹配。我最终粘贴了错误的单元格。

如何在应用过滤器后操纵数据源,即获取实际的索引/数据来执行所有操作?

安朱姆·汗

根据我对您提出的问题的理解。出现在Item1之后的新记录也应该出现在源集合的Item1之后。由于索引不同(当然会有所不同),因此目前还没有发生这种情况。由于您尚未发布代码,因此我在下面发布了示例代码:

// new employee to add
            Employee empNew = new Employee() { Name = "New1", Address = "NewAdd1" };

// get corresponding item  in filtered view after which you want to insert
            Employee emp = (Employee)DgrdEmployees.SelectedItem;

// get true collection which is datasource
            ObservableCollection<Employee> sourceCol = (ObservableCollection<Employee>)(CollectionViewSource.GetDefaultView(DgrdEmployees.ItemsSource).SourceCollection);

// find index of selected item after which we are inserting/pasting
            int trueIndex = sourceCol.IndexOf(emp);

// insert it at exact location in true unfiltered source collection
            sourceCol.Insert(trueIndex + 1, empNew);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在DataGrid中编辑后直接保存实体

WPF-Datagrid编辑后获取新项目

编辑后WPF Datagrid行验证错误未清除

在WPF DataGrid中实现编辑和双击(MouseDoubleClick)。

如何了解CurrentCell在WPF DataGrid中是否处于编辑模式?

在WPF DataGrid中单击编辑按钮时获取当前行?

如何禁用WPF Datagrid中的单元格编辑?

在DataGrid WPF中创建自定义编辑行

在DataTable中查找和编辑行速度优化WPF DataGrid

使WPF DataGrid列可编辑

WPF DataGrid-编辑结束后单元格的新值

WPF DataGrid-如何在验证错误后取消编辑行?

WPF Datagrid的可编辑单元格在删除旧值并留空然后跳出后被禁用

WPF DataGrid - 如何在行编辑时显示一行中的按钮(检测编辑模式)?

在WPF DataGrid上禁用行编辑

WPF DataGrid中的Colspan

ScrollViewer中的WPF DataGrid

AngularJS中的可编辑DataGrid

C# WPF DataGrid 事件处理程序,用于读入列中的可编辑 ComboBox 值

如何在DataGrid控件wpf中编辑单元格类型?

即使在验证触发时,也可以在WPF DataGrid中取消编辑模式

WPF如何编辑以编程方式添加的DataGrid中的行C#

在 WPF Datagrid 中编辑日期时如何更改日期格式

Caliburn.Micro MVVM WPF-在用户编辑了DataGrid后启用按钮,否则将其禁用

WPF过滤Datagrid组合框列

WPF DataGrid 上的排序和过滤问题

如何在wpf C#中从日期到日期过滤datagrid数据

FontSize更改后自动WPF DataGrid

wpf DataGrid SelectedItem 绑定后得到 NullReferenceException