首页 > 解决方案 > DataTable.GetChanges() 未按预期工作

问题描述

vb.Net 4.6.1 - Windows 窗体应用程序

我正在尝试对表单上的数据表进行一些更改,但遇到了一些问题。我已经获得了在测试表单上正常工作的功能,但我无法在我的大表单上找出问题所在。

假设我有一个带有组合框的 Windows 窗体,该组合框显示 ID 列表和一个包含 Id 详细信息的文本框。detail.text 属性绑定到数据适配器。我的问题是,当我更改文本框中的文本然后检查 getchanges 时,我看不到任何更改。

我在表单上放了一个按钮来按需检查数据表值,它们正在发生变化,但由于某种原因没有检测到变化。

  1. 加载表单,在组合框中选择一个 Id,然后将详细信息加载到文本框中。
  2. 按下按钮,查看原始值:

    MessageBox.Show(DsSIngleJob.apGetSingleJob.Item(0).detail)
    MessageBox.Show(DsSIngleJob.apGetSingleJob.Rows(0).Item("detail"))

  3. 更改文本框中的文本。

  4. 按下按钮,消息框会显示新值。
  5. 测试更改,但没有找到:

    ApGetSingleJobBindingSource.EndEdit()

    将 JobChanges 调暗为 DataTable = New DataTable

    JobChanges = Me.DsSIngleJob.apGetSingleJob.GetChanges

    MessageBox.Show(JobChanges.Rows.Count.ToString)

如果我没有更改表单上的文本,而是在 EndEdit 之前将其直接写入数据表,则将获取更改:

 DsSIngleJob.apGetSingleJob.Rows(0).Item("detail") = "NewValue"

因为我让它在一个测试表单上工作,所以主表单或相关的数据适配器一定有问题,但我整天都在搞这个,我无法让它工作。如果有人有值得检查的东西,那就太好了。在手动更改文本框后,我检查了表单是否有任何应用更改或加载,但我没有找到任何东西。

标签: vb.net

解决方案


推荐阅读