有没有办法将BindingSource的当前项属性与Datagrid的选定项同步?例如,我单击Datagrid中的第10行,当我按下一个按钮来调用BindingSource.MoveNext()然后使用BindingSource.Current设置Datagrid.SelectedItem;突出显示的行是第2行而不是第11行。
我这样做是错误的吗?我只是希望datagrid突出显示操作后的下一行(例如更新我点击的行),但Datagrid似乎没有提供这样做的方法,而且我还处理BindingSource。
答案 0 :(得分:0)
当您点击DataGridView
中的特定行时,将Position
对象的BindingSource
属性设置为适当的值,而不是为DataGridView
指定选定的行
答案 1 :(得分:0)
如果您希望数据网格和集合同步,则必须为数据网格设置IsSynchronizedWithCurrentItem = true。您的集合应该是ICollectionView或BindingListCollectionView类型。你可以用
来实现这个目标this.view = CollectionViewSource.GetDefaultView(this.mysourcecollection)
如果你这样做,你的选择项总是同步的。并且您可以使用ICollectionView的MoveTo -methods来逐步浏览您的项目。
如果您还有其他问题,请留下一些评论
编辑:
如果你使用datatables作为集合源,只需创建一个BindingListCollectionView类型的属性。
public BindingListCollectionView MyView
{ get;set;}
以这种方式初始化数据表init之后的BindingListCollectionView:
this.MyView = (BindingListCollectionView )CollectionViewSource.GetDefaultView(this.mydatatable);
然后只需将此视图用作datagrid的ItemsSource
<DataGrid ItemsSource="{Binding MyView}" IsSynchronizedWithCurrentItem="true" />
你现在可以做的就是打电话:
this.MyView.MoveCurrentToFirst();
this.MyView.MoveCurrentToLast();
this.MyView.MoveCurrentToNext();
this.MyView.MoveCurrentToPrevious();
//and some other