我有一个与Microsoft Access后端通信的vb.net应用程序。在一个表格中,我有一个datagridview
,在其下面有许多“细节”字段;这些是通过拖动到表单上生成的,所以有自动生成的代码,它几乎可以工作:如果我点击datagridview
中的一行,详细信息字段显示该数据,如果我更改数据(通过键入)在任何详细信息字段中(这些字段为textboxes
,comboboxes
等),datagridview
中的数据会发生变化。
注意 - 我已将datagridview
设置为只读,因此所有用户更改都必须在详细信息字段中运行,我会在其中进行大量一致性检查。到目前为止,一切都很好。
出现的问题是,如果我以编程方式更改某些详细信息字段,则该数据不会显示在datagridview中。如果将数据输入某些字段,我想要这样做 - 想象有人进入生日,我想更新Age字段(这是名义上的;这很愚蠢,但机制是相同的)。在该示例中,我可能设置Agetextbox.text = "52"
或其他内容,但该数据未显示在datagridview中。如果我键入“52”进入该字段,则datagridview 会更新。
在将数据推送回数据库之前,这一切都在发生 - 事实上我不想在用户填写几乎所有字段之前提交这些更改,或者至少它们都是有效的 - 所以这不是更新数据库和重新读取数据的问题。这只是让两个(我认为)相同绑定控件显示相同数据的问题。
可能很重要的细节 - 程序化更新适用于datagridview中的前4列或5列,而不适用于其余列。没有错误,但对我来说,更新似乎是为了几个字段然后停止,这是可疑的。到目前为止,这是我一直在挖掘的地方,没有运气。
我将再次尝试深入了解自动生成的代码,看看我是否能找到答案,但我会感激任何人的智慧。
答案 0 :(得分:0)
程序化更新后的bindingsource.endedit()似乎解决了这个问题。