用户更新控件时未更新绑定源 (VB.NET Winforms)
Binding Source not being updated when controls are updated by user (VB.NET Winforms)
这应该很简单,但不起作用。我是一个简单的表单,其中包含由数据库通过 table 适配器和绑定源填充的控件。 Form_Load 事件的代码在这里:
Me.DS_Phantom_Location_taLocation1.Fill(Me.DS_Phantom_Location1.dtLocation, CType(resultnum, Integer))
bsLocation.DataSource = Me.DS_Phantom_Location1.dtLocation
这部分工作正常,控件使用数据库中的数据更新。
当用户单击“确定”按钮时,数据库本应更新,但并未发生。
代码在这里:
Me.bsLocation.EndEdit()
Me.DS_Phantom_Location_taLocation1.Update(DS_Phantom_Location1.dtLocation)
我通过查看底层数据行知道绑定源未更新 - 这也在 btnok_click 事件中:
Dim drv As DataRowView = TryCast(Me.bsLocation.Current, DataRowView)
Dim dr As DataRow = drv.Row
s = dr("INSTITUTION_DOSE").ToString
s 仍然是数据库中的旧值。
bsLocation 似乎永远不会更新。我确保控件具有 causevalidation = true 并且控件是数据绑定的(记住它被填充得很好)。
在这一点上,除了放弃绑定源的想法并使用 table 适配器直接更新之外,我不确定还能做什么。我知道这可行,但并不理想,尤其是对于具有 50 个左右控件的大型表单。 (我的项目有)。任何 help/ideas 都会很棒。泰
所以在这上面花了很长时间之后,我将其故障排除回数据集,我用来生成数据的 SQL 有很多 TRIM() 函数,这导致列别名是搞砸了,大部分列都设置为只读,来自 table 适配器的 UPDATE 注释实际上只有几个数据库列。因此,删除 TRIM() 函数并重建命令有效,现在它会适当更新。
这应该很简单,但不起作用。我是一个简单的表单,其中包含由数据库通过 table 适配器和绑定源填充的控件。 Form_Load 事件的代码在这里:
Me.DS_Phantom_Location_taLocation1.Fill(Me.DS_Phantom_Location1.dtLocation, CType(resultnum, Integer))
bsLocation.DataSource = Me.DS_Phantom_Location1.dtLocation
这部分工作正常,控件使用数据库中的数据更新。
当用户单击“确定”按钮时,数据库本应更新,但并未发生。
代码在这里:
Me.bsLocation.EndEdit()
Me.DS_Phantom_Location_taLocation1.Update(DS_Phantom_Location1.dtLocation)
我通过查看底层数据行知道绑定源未更新 - 这也在 btnok_click 事件中:
Dim drv As DataRowView = TryCast(Me.bsLocation.Current, DataRowView)
Dim dr As DataRow = drv.Row
s = dr("INSTITUTION_DOSE").ToString
s 仍然是数据库中的旧值。
bsLocation 似乎永远不会更新。我确保控件具有 causevalidation = true 并且控件是数据绑定的(记住它被填充得很好)。
在这一点上,除了放弃绑定源的想法并使用 table 适配器直接更新之外,我不确定还能做什么。我知道这可行,但并不理想,尤其是对于具有 50 个左右控件的大型表单。 (我的项目有)。任何 help/ideas 都会很棒。泰
所以在这上面花了很长时间之后,我将其故障排除回数据集,我用来生成数据的 SQL 有很多 TRIM() 函数,这导致列别名是搞砸了,大部分列都设置为只读,来自 table 适配器的 UPDATE 注释实际上只有几个数据库列。因此,删除 TRIM() 函数并重建命令有效,现在它会适当更新。