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 для навигации по записям в моем наборе данных.

Другие вопросы по тегам