用datagrid的SelectedItem属性更新BindingSource'的Current属性

本文关键字:属性 Current 更新 datagrid SelectedItem BindingSource | 更新日期: 2023-09-27 17:53:21

是否有一种方法来同步BindingSource的当前项目属性与Datagrid的选定项目?例如,当我按下按钮调用BindingSource.MoveNext()然后设置Datagrid时,单击Datagrid中的第10行。SelectedItem with BindingSource.Current;高亮显示的行是第2行,而不是第11行。

我这样做错了吗?我只是想让datagrid在操作之后突出显示下一行(例如更新我单击的行),但是datagrid似乎没有提供这样做的方法,所以我只能处理BindingSource。

用datagrid的SelectedItem属性更新BindingSource'的Current属性

单击DataGridView中的特定行时,将BindingSource对象的Position属性设置为适当的值,而不是为DataGridView分配选定的行

如果你想让你的数据网格和你的集合同步,你必须为你的数据网格设置IsSynchronizedWithCurrentItem = true。你的集合类型应该是ICollectionView或BindingListCollectionView。您可以使用

实现这一点
this.view = CollectionViewSource.GetDefaultView(this.mysourcecollection)

如果你这样做,你所选择的项目总是同步的。你可以使用你的ICollectionView的MoveTo方法来遍历你的项目。

如果你还有问题,请留下你的评论

编辑:

如果你使用数据表作为collectionsource,只需创建一个类型为BindingListCollectionView的属性。

public BindingListCollectionView MyView
{ get;set;}

在初始化你的数据表之后,以这种方式初始化BindingListCollectionView:

 this.MyView = (BindingListCollectionView )CollectionViewSource.GetDefaultView(this.mydatatable);

然后使用这个视图作为你的数据网格的ItemsSource

<DataGrid ItemsSource="{Binding MyView}" IsSynchronizedWithCurrentItem="true" />

你现在能做的就是调用:

this.MyView.MoveCurrentToFirst();
this.MyView.MoveCurrentToLast();
this.MyView.MoveCurrentToNext();
this.MyView.MoveCurrentToPrevious();
//and some other