【问题标题】:Binding Source not being updated when controls are updated by user (VB.NET Winforms)用户更新控件时未更新绑定源(VB.NET Winforms)
【发布时间】:2023-04-02 12:55:02
【问题描述】:

这应该很简单,但不起作用。我是一个简单的表单,其中包含由数据库通过表适配器和绑定源填充的控件。 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 并且控件是数据绑定的(请记住它被填充得很好)。

此时我不确定除了放弃 bindingsource 想法并使用表适配器直接更新之外还能做什么。我知道这很有效,但并不理想,尤其是对于具有 50 个左右控件的大型表单。 (我的项目有)。任何帮助/想法都会很棒。类型

【问题讨论】:

    标签: .net vb.net oracle winforms dataset


    【解决方案1】:

    因此,经过太长时间的处理,我将其故障排除回数据集,我用来生成数据的 SQL 有许多 TRIM() 函数,这会导致列别名混乱,并且大多数列都已设置只读,表适配器的 UPDATE 注释实际上只有几个数据库列。因此删除 TRIM() 函数并重建命令有效,现在它会正确更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 2014-06-11
      • 2013-02-03
      • 2010-09-19
      • 1970-01-01
      相关资源
      最近更新 更多