vb.net привязка источника и привязка навигация программно
Пожалуйста, посмотрите на следующий код и скажите мне, почему он не перемещается к следующей записи? Я загружаю данные программно и заполняю таблицы в наборе данных. Я мог бы сделать это с помощью мастера, но я хочу сделать это с моим собственным кодом; потому что использование мастера иногда не помогает понять реальный код, стоящий за ним. Пожалуйста помоги
Private Sub frmSystemOptions_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
dsOptions = New DataSet
loadOptions()
bsInstitute = New BindingSource(dsOptions, "institute")
bnInstitute = New BindingNavigator(bsInstitute)
InstIdTextBox.DataBindings.Add("Text", dsOptions.Tables("institute"),"instId")
CodeTextBox.DataBindings.Add("Text", dsOptions.Tables("institute"), "code")
NameTextBox.DataBindings.Add("Text", dsOptions.Tables("institute"), "name")
TypeTextBox.DataBindings.Add("Text", dsOptions.Tables("institute"), "type")
Catch ex As Exception
MsgBox(Err.Description)
End Try
End Sub
Sub loadOptions()
Dim sql As String
Try
sqlConn = New SqlConnection(connString)
sqlConn.Open()
sql = "select * from institute"
daAdapter = New SqlDataAdapter(sql, sqlConn)
daAdapter.Fill(dsOptions, "institute")
'----------------------------------------------------------------------
sqlConn.Close()
Catch ex As Exception
sqlConn.Close()
MsgBox(Err.Description)
End Try
End Sub
Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
If bsInstitute.Position + 1 < bsInstitute.Count Then
bsInstitute.MoveNext()
Else
bsInstitute.MoveFirst()
End If
Me.Validate()
End Sub
1 ответ
Решение
Я нашел решение. Границы данных должны быть следующими:
InstIdTextBox.DataBindings.Add("Text", bsInstitute, "instId") CodeTextBox.DataBindings.Add("Text", bsInstitute, "code") NameTextBox.DataBindings.Add("Text", bsInstitute, "name") TypeTextBox.DataBindings.Add("Text", bsInstitute, "type")
dataset instead of bsInstitute. But now its perfect. Try
dsOptions = New DataSet
loadOptions()
bsInstitute = New BindingSource(dsOptions, "institute")
InstIdTextBox.DataBindings.Add("Text", bsInstitute, "instId")
CodeTextBox.DataBindings.Add("Text", bsInstitute, "code")
NameTextBox.DataBindings.Add("Text", bsInstitute, "name")
TypeTextBox.DataBindings.Add("Text", bsInstitute, "type")
Catch ex As Exception
MsgBox(Err.Description)
End Try
Я использовал набор данных для привязки, как это
InstIdTextBox.DataBindings.Add("Text", dsOptions.Tables("institute"),"instId")
Но что правильно, я должен заменить dsOptions.tables("institute") в приведенной выше строке кода на bindingSource, который я создал следующим образом:
InstIdTextBox.DataBindings.Add("Text", bsInstitute, "instId")
Таким образом, я мог использовать объект bindingSource для навигации по записям в моем наборе данных.