无法将绑定控件更改推送到数据集
Unable to push bound control changes to the dataset
我正在尝试比较数据绑定文本框的原始值和当前值。我做了一些研究并尝试了一些方法,但我似乎无法让它发挥作用。我通过 Visual Studio 2012 使用 vb.net。数据库在 SQL 2012 服务器上 运行ning,我正在使用存储过程来提供数据。
填充语句:
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 的数据。我转到文本框,将其更改为 Jones 并跳出。我击中了上面的断点并检查了 Watch window:
中的值
me.DsEmployee.spGetEmployee(0)("LastName", DataRowVersion.Original).ToString
me.DsEmployee.spGetEmployee(0)("LastName", DataRowVersion.Current).ToString
两行都显示 Smith 作为值,但在屏幕上您看到的是 Jones。
我的研究表明我可能必须 运行 EndCurrentEdit 才能将 textbox.text 值下推到数据集,但我没有运气。以下是我如何尝试结束当前编辑的三个示例,但到目前为止值保持不变并且数据集未获取更改:
BindingContext(Me.DsEmployee.Tables.Item("Me.DsEmployee.spGetEmployee(0)")).EndCurrentEdit()
BindingContext(Me.DsEmployee.spGetEmployee.Rows(0)).EndCurrentEdit()
BindingContext(Me.DsEmployee).EndCurrentEdit
我毫不怀疑我做错了,但我肯定会很感激。
谢谢!
我 运行 进行了几次测试,实际上它可以正常工作。这是我在测试 "Current" 数据行版本之前需要做的事情:
me.SpGetEmployeeBindingSource.EndEdit()
一旦我 运行 那行代码,我就可以测试 DataRowVersion.Current 中的值,并且我可以看到新值。此外,当我检查 me.dsEmployee.HasChanges 它 returns True 时它在没有 EndEdit 的情况下返回 False。
我正在尝试比较数据绑定文本框的原始值和当前值。我做了一些研究并尝试了一些方法,但我似乎无法让它发挥作用。我通过 Visual Studio 2012 使用 vb.net。数据库在 SQL 2012 服务器上 运行ning,我正在使用存储过程来提供数据。
填充语句:
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 的数据。我转到文本框,将其更改为 Jones 并跳出。我击中了上面的断点并检查了 Watch window:
中的值me.DsEmployee.spGetEmployee(0)("LastName", DataRowVersion.Original).ToString
me.DsEmployee.spGetEmployee(0)("LastName", DataRowVersion.Current).ToString
两行都显示 Smith 作为值,但在屏幕上您看到的是 Jones。
我的研究表明我可能必须 运行 EndCurrentEdit 才能将 textbox.text 值下推到数据集,但我没有运气。以下是我如何尝试结束当前编辑的三个示例,但到目前为止值保持不变并且数据集未获取更改:
BindingContext(Me.DsEmployee.Tables.Item("Me.DsEmployee.spGetEmployee(0)")).EndCurrentEdit()
BindingContext(Me.DsEmployee.spGetEmployee.Rows(0)).EndCurrentEdit()
BindingContext(Me.DsEmployee).EndCurrentEdit
我毫不怀疑我做错了,但我肯定会很感激。
谢谢!
我 运行 进行了几次测试,实际上它可以正常工作。这是我在测试 "Current" 数据行版本之前需要做的事情:
me.SpGetEmployeeBindingSource.EndEdit()
一旦我 运行 那行代码,我就可以测试 DataRowVersion.Current 中的值,并且我可以看到新值。此外,当我检查 me.dsEmployee.HasChanges 它 returns True 时它在没有 EndEdit 的情况下返回 False。