用户更新控件时未绑定源绑定源(VB.NET Winforms)

时间:2016-05-06 14:37:54

标签: .net vb.net oracle winforms dataset

这应该很简单,但不起作用。我是一个简单的表单,其控件由数据库通过表适配器和bindingsource填充。 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)

我从查看基础数据库得知bindingsource没有更新 - 我也知道这也在btnok_click事件中:

    Dim drv As DataRowView = TryCast(Me.bsLocation.Current, DataRowView)
    Dim dr As DataRow = drv.Row
    s = dr("INSTITUTION_DOSE").ToString

仍然是数据库中的旧值。

看起来bsLocation永远不会更新。我确保控件有causevalidation = true并且控件是数据绑定(记住它填充得很好)。

此时我不知道该做什么除了废弃bindingsource的想法并使用表适配器直接更新。我知道这有效,但它并不理想,特别是对于有50个左右控件的大型表格。 (我的项目有)。任何帮助/想法都会很棒。 TY

1 个答案:

答案 0 :(得分:0)

所以经过这么长时间后,我把它弄回数据集,我用来生成数据的SQL有很多TRIM()函数,这会导致列别名混乱,并且大多数列都被设置了只读,表适配器的UPDATE注释实际上只有几个数据库列。因此删除TRIM()函数并重建命令工作,现在它更新为正确。