无法将绑定控件更改推送到数据集

时间:2015-08-24 18:40:02

标签: vb.net sqldataadapter

我正在尝试比较数据绑定文本框的原始值和当前值。我做了一些研究并尝试了一些方法,但我似乎无法让它工作。我通过Visual Studio 2012使用vb.net。数据库在SQL 2012服务器上运行,我正在使用存储过程来提供数据。

填写声明:

Me.SpGetEmployeeTableAdapter.Fill(Me.DsEmployee.spGetEmployee, cboEmpId.SelectedValue)

我的文本框名为txtLastName,txtLastname.Text绑定到spGetEmployeeBindingSource.LastName

我有一个处理txtLastName.LostFocus的方法,所以我可以按如下方式观察值:

Private Sub LastName_Out() Handles txtLastName.LostFocus

      Dim x as String
      x = "Hi" (breakpoint) 

End Sub

我运行应用程序并使用上面的填充为员工Smith加载数据。我转到文本框,将其更改为琼斯并标签。我点击上面的断点并检查Watch窗口中的值:

me.DsEmployee.spGetEmployee(0)("LastName", DataRowVersion.Original).ToString
me.DsEmployee.spGetEmployee(0)("LastName", DataRowVersion.Current).ToString

两条线都显示史密斯值,但在屏幕上显示琼斯。

我的研究表明,我可能必须运行EndCurrentEdit才能将textbox.text值推送到数据集,但我没有运气。以下是我尝试结束当前编辑的三个示例,但到目前为止,值保持不变且数据集未获取更改:

BindingContext(Me.DsEmployee.Tables.Item("Me.DsEmployee.spGetEmployee(0)")).EndCurrentEdit()
BindingContext(Me.DsEmployee.spGetEmployee.Rows(0)).EndCurrentEdit()
BindingContext(Me.DsEmployee).EndCurrentEdit

我毫不怀疑我做错了,但我肯定会欣赏这条腿。

谢谢!

1 个答案:

答案 0 :(得分:0)

我进行了几次测试,实际上让它正常工作。以下是在测试“当前”数据行版本之前我需要做的事情:

me.SpGetEmployeeBindingSource.EndEdit()

一旦我运行了那行代码,我就可以测试DataRowVersion.Current中的值,我可以看到新值。另外,当我检查me.dsEmployee.HasChanges时,如果没有EndEdit返回False,则返回True。