记住DataGridView中的选定行

时间:2009-07-22 10:59:11

标签: .net vb.net data-binding datagridview

我正在尝试让我的datagridview控件在数据刷新后记住所选行 DGV被数据绑定到业务对象列表:

Dim FXs As SortableBindingList(Of FX) = FX.LoadAllForBinding(FXStatus) 
Dim bs As New BindingSource
bs.DataSource = FXs

总体顺序是这样的:

  1. 用户点击一行
  2. 行索引保存在变量
  3. 用户以弹出形式编辑数据,完成后关闭
  4. 刷新Datagridview(从头开始重新绑定)
  5. 所选行设置为先前保存的索引(在DGV的DataBindingComplete事件中)

    Me.dgvMain.Rows(_ CurrentSelectedRowNo).Selected = True

  6. 这似乎工作正常,所选行设置正确(至少计数从0到1)。然而接下来发生的事情是调试器跳转到绑定业务对象的属性(可能是为了绑定而读取它们),因此DataBindingComplete事件似乎在DataBinding完成之前触发。

    DGV最多可以包含300行,因此每次编辑行时,它会跳回到第0行,这对用户来说非常烦人!

    我在做一些明显错误的事吗?我应该为此使用不同的活动吗?

1 个答案:

答案 0 :(得分:1)

我正在做类似的事情,但没有使用网格事件来确定何时刷新。 在编辑表单中完成编辑后,我会调用我的刷新例程。

使用网格行号的问题是它可能在编辑之后或编辑期间发生了变化,特别是如果您支持多个用户并且您的网格是服务器上的表的视图,或者他们可以对网格进行排序行。

我必须使用行的PK值来识别已更改的行,并且考虑到它们可以在编辑期间更改其中一个pk值,我还需要跟踪更新的PK值。

我在更新值时举起自己的事件。