用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。
单击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