VB.Net 2013 Как программно обновить источник связывания, не получая ошибок / предупреждений о позднем связывании?
Я создал DataSet с DataTable & TableAdapter, который содержит команды выбора / обновления / вставки / удаления, относящиеся к моей базе данных MSSQL. DataTable выбирает все поля из таблицы Person (два поля, в частности, строка LastName и UpdateUserID int).
Затем я сделал простую тестовую форму с текстовым полем и кнопкой. На вкладке "Источники данных" я перетащил поле "Фамилия" на форму. Это создает MyDataset, MyTableAdapter и MyBindingSource в форме. Он также связывает текстовое поле с полем LastName источника BindingSource.
Вот полный код формы:
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, чтобы сохранить идентификатор пользователя, который недавно внес изменение.
В Visual Studio 2008 это работало нормально. Но я только что обновился до 2013 года, и теперь я получаю сообщение об ошибке "Option Strict On запрещает позднюю привязку".
(PS, это тестовая программа. В реальной программе, конвертированной с 2008 года, я получаю только предупреждения, говорящие "Разрешение с поздней привязкой; могут возникнуть ошибки времени выполнения".)
Я понимаю, почему я получаю эти ошибки / предупреждения: потому что IDE не знает, что такое DataType DataColumn "updateUserID".
Но что я могу сделать, чтобы вручную обновить BindingSource перед сохранением? Я не думаю, что отключение Option Strict - хорошая идея.
DataColumns в DataTable имеют свои типы данных. Есть ли способ ссылаться на DataColumn напрямую, а не через строку его имени?
Я ищу что-то вроде:
Me.MyBindingSource.Current.DataColumns.UpdateUserID.value = 123
Спасибо за любую помощь!