我正在尝试让我的datagridview控件在数据刷新后记住所选行 DGV被数据绑定到业务对象列表:
Dim FXs As SortableBindingList(Of FX) = FX.LoadAllForBinding(FXStatus)
Dim bs As New BindingSource
bs.DataSource = FXs
总体顺序是这样的:
所选行设置为先前保存的索引(在DGV的DataBindingComplete事件中)
Me.dgvMain.Rows(_ CurrentSelectedRowNo).Selected = True
这似乎工作正常,所选行设置正确(至少计数从0到1)。然而接下来发生的事情是调试器跳转到绑定业务对象的属性(可能是为了绑定而读取它们),因此DataBindingComplete事件似乎在DataBinding完成之前触发。
DGV最多可以包含300行,因此每次编辑行时,它会跳回到第0行,这对用户来说非常烦人!
我在做一些明显错误的事吗?我应该为此使用不同的活动吗?
答案 0 :(得分:1)
我正在做类似的事情,但没有使用网格事件来确定何时刷新。 在编辑表单中完成编辑后,我会调用我的刷新例程。
使用网格行号的问题是它可能在编辑之后或编辑期间发生了变化,特别是如果您支持多个用户并且您的网格是服务器上的表的视图,或者他们可以对网格进行排序行。
我必须使用行的PK值来识别已更改的行,并且考虑到它们可以在编辑期间更改其中一个pk值,我还需要跟踪更新的PK值。
我在更新值时举起自己的事件。