Vb.net DataGridView最后一行未提交
到目前为止,我在这方面花了太长时间,搜索并没有帮助找到我遇到的问题 我有一个绑定到BindingSourceVb.net DataGridView最后一行未提交,vb.net,datagridview,vsto,dataadapter,Vb.net,Datagridview,Vsto,Dataadapter,到目前为止,我在这方面花了太长时间,搜索并没有帮助找到我遇到的问题 我有一个绑定到BindingSource现有HafData的DataGridView。当用户按下按钮时,代码将遍历所有选定的行,并标记“删除”记录的名称和日期(具有名称和日期的记录不会显示在活动列表中;将来可以取消删除) 现在的情况是,除了最后一张唱片外,这张唱片对所有唱片都很好。例如,如果用户选择五条记录,则四条记录将正确更新;最后一个选中的行(实际上,为了清楚起见)不会正确更新网格上所有选中的行,但是当我调用适配器的upda
现有HafData
的DataGridView。当用户按下按钮时,代码将遍历所有选定的行,并标记“删除”记录的名称和日期(具有名称和日期的记录不会显示在活动列表中;将来可以取消删除)
现在的情况是,除了最后一张唱片外,这张唱片对所有唱片都很好。例如,如果用户选择五条记录,则四条记录将正确更新;最后一个选中的行(实际上,为了清楚起见)不会正确更新网格上所有选中的行,但是当我调用适配器的update时,只返回四行而不是五行(在DB的数据表中,四行收到了值,最后一行没有)
在上面的代码中,DidCommit是True。然而,LinesChanged比我预期的要少一个
我尝试在最后一次单元格更改后添加行,如
MainData.EndEdit()
,但这并没有改变行为。如果在提交之前暂停例程并手动编辑单元格,则所有行都会保存。(这向我暗示,它并没有完全脱离编辑模式,但如果是这样的话,我找不到任何证据或结束编辑的方法)@jmcillhinney拥有丢失的片段。通过添加ExistingHAFData.EndEdit()
,我现在可以将100%的修改行保存到数据库中
Dim DidCommit As Boolean = MainData.CommitEdit(DataGridViewDataErrorContexts.Commit)
ExistingHAFData.EndEdit()
Dim LinesChanged As Integer = DeleteAdapter.Update(CType(ExistingHAFData.DataSource, Data.DataTable))
我一直错误地认为是网格本身“导致”了问题,而不是bindingsource。在保存之前,您应该在
bindingsource
上调用EndEdit
。
Dim DidCommit As Boolean = MainData.CommitEdit(DataGridViewDataErrorContexts.Commit)
ExistingHAFData.EndEdit()
Dim LinesChanged As Integer = DeleteAdapter.Update(CType(ExistingHAFData.DataSource, Data.DataTable))