Vb.net 数据适配器不会更新所有更新的行

Vb.net 数据适配器不会更新所有更新的行,vb.net,Vb.net,长话短说,我有一个dgv,它从mysql数据库获取数据,我可以对网格中的数据进行更改并保存回表中,没有问题,除了这一点:用户在dgv上所做的更改不是直接(或手动)在dgv上完成的,相反,用户点击加号或减号按钮,我会实际地增加或减少一个叫做Quantity的字段中的数字,这个字段实际上是唯一可以更新的字段 现在,当我更新adapte命令(…da.update(ds,“salesDet”))时,上次更改的行不会得到更新,除非在按下更新按钮之前手动将该行保留到另一行。例如,如果我在dgv中有3行,我选

长话短说,我有一个dgv,它从mysql数据库获取数据,我可以对网格中的数据进行更改并保存回表中,没有问题,除了这一点:用户在dgv上所做的更改不是直接(或手动)在dgv上完成的,相反,用户点击加号或减号按钮,我会实际地增加或减少一个叫做Quantity的字段中的数字,这个字段实际上是唯一可以更新的字段

现在,当我更新adapte命令(…da.update(ds,“salesDet”))时,上次更改的行不会得到更新,除非在按下更新按钮之前手动将该行保留到另一行。例如,如果我在dgv中有3行,我选择了数量为1的第2行,然后我按下加号按钮,数量变为2。然后,如果我在仍然在第2行时立即按下更新按钮,它将不会更新到我的数据库。只有在按下更新按钮之前,我离开第2行,说是第1行或第3行,它才会起作用。有点像,因为我是通过编程而不是手动更改数字,所以我需要离开编辑过的行,以“更新后”提交要激发的新值?我不知道我是否有道理,但我真的迷路了

我在更新之前尝试过dgv.EndEdit()、dgv.RefreshEdit()、dgv.Refresh(),但都不起作用


感谢您的帮助

听起来当前行尚未验证,因此您的更改尚未生效。解决这个问题的一个笨拙的方法可能是在更新方法的开始处将dgv.CurrentRow设置为nothing以强制验证

听起来当前行尚未验证,因此您的更改尚未生效。解决这个问题的一个笨拙的方法可能是在更新方法的开始处将dgv.CurrentRow设置为nothing以强制验证。不过,有人可能会提出一个更优雅的解决方案。@JonathonCowley-Thom你称之为笨拙,我称之为天才。成功了。我使用了CurrentCell(第一个可见列的索引),因为CurrentRow是只读的。非常感谢。到时我会发布一个真实的答案。这仍然不是理想的解决方案,但如果它起作用,它就会起作用。