2

我创建了一个带有 DataTable 和 TableAdapter 的 DataSet,其中包含与我的 MSSQL 数据库相关的 Select/Update/Insert/Delete 命令。DataTable 从 Person 表中选择所有字段(两个字段,特别是 LastName 字符串和 UpdateUserID int)。

然后我用一个文本框和一个按钮制作了一个简单的测试表单。从 Data Sources 选项卡中,我将 LastName 字段拖到表单上。这将在表单上创建 MyDataset、MyTableAdapter 和 MyBindingSource。它还将文本框数据绑定到 BindingSource 的 LastName 字段。

这是表单的完整代码:

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        loadData()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.Validate()
        Me.MyBindingSource.EndEdit()
        ' Me.MyBindingSource.Current("updateUserID") = 123
        Me.MyTableAdapter.Update(Me.MyDataset.myDatatable)
        loadData()
    End Sub

    Private Sub loadData()
        Me.MyTableAdapter.Fill(Me.MyDataset.myDatatable)
    End Sub

End Class

这一切都很好。当我取消注释以下行时会出现问题:“Me.MyBindingSource.Current("updateID") = 123"。我正在尝试设置 UpdateID 以保存最近进行更改的用户的 ID。

在 Visual Studio 2008 中,这工作得很好。但是我刚刚升级到 2013,现在我收到一条错误消息,上面写着“Option Strict On 不允许后期绑定”。

(PS,这是一个测试程序。在实际程序中 - 从 2008 年转换而来 - 我只收到警告说“后期绑定分辨率;可能会发生运行时错误。”)

我理解为什么会收到这些错误/警告:因为 IDE 不知道“updateUserID”DataColumn 是什么 DataType。

但是在保存之前我可以做些什么来手动更新 BindingSource 呢?我不认为关闭 Option Strict 是个好主意。

DataTable 中的 DataColumns 指定了它们的 DataTypes。有没有办法直接引用 DataColumn 而不是通过其名称的字符串?

我正在寻找类似的东西:

Me.MyBindingSource.Current.DataColumns.UpdateUserID.value = 123

谢谢你的帮助!

4

0 回答 0