Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 记住DataGridView中的选定行_.net_Vb.net_Data Binding_Datagridview - Fatal编程技术网

.net 记住DataGridView中的选定行

.net 记住DataGridView中的选定行,.net,vb.net,data-binding,datagridview,.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 整体顺序如下所示: 用户单击一行 行索引保存在变量中 用户编辑弹出表单中的数据,完成后关闭 Datagridview已刷新(从头重新绑定) 选定行设置为以前保存的索

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

Dim FXs As SortableBindingList(Of FX) = FX.LoadAllForBinding(FXStatus) 
Dim bs As New BindingSource
bs.DataSource = FXs
整体顺序如下所示:

  • 用户单击一行
  • 行索引保存在变量中
  • 用户编辑弹出表单中的数据,完成后关闭
  • Datagridview已刷新(从头重新绑定)
  • 选定行设置为以前保存的索引(在DGV的DataBindingComplete事件中)

    Me.dgvMain.Rows(_CurrentSelectedRowNo).Selected=True

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

    DGV最多可以有300行,因此用户每次编辑一行时,DGV都会跳回零行,这让人非常恼火


    我是不是做错了什么?我应该为此使用不同的事件吗?

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

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

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


    当他们更新值时,我会引发我自己的事件。

    有什么原因不能在数据网格视图中编辑值吗?以弹出形式编辑数据的好处是什么?基本设计,DGV仅显示字段的子集。