Как создать автозаполнение выпадающего списка с помощью SQLite Data Reader

#vb.net #sqlite

#vb.net #sqlite

Вопрос:

У меня есть два таких поля со списком

введите описание изображения здесь

Мне нужно создать функцию автозаполнения для 1-го выпадающего списка. В нем должен быть указан идентификатор сотрудника, если в поле поиска указан номер сотрудника. Аналогично, в нем должно быть указано имя сотрудника вместе с фамилией, если в поле поиска указано Employee-Name.

Как я могу это сделать? Понятия не имею, я делаю это впервые. Я использую SQLite, Visual Studio 2010.

   Dim mySelectQuery As String = "SELECT " amp; Search amp; " FROM EmployeeTable WHERE Status LIKE '" amp; Status amp; "'"
        Dim myConnString As String = "Data Source=" amp; Application.StartupPath amp; "DatabaseSimpleDB.db3"
        Dim sqConnection As New SQLiteConnection(myConnString)
        Dim sqCommand As New SQLiteCommand(mySelectQuery, sqConnection)
        sqConnection.Open()

        Try
            ' Always call Read before accessing data.
            Dim sqReader As SQLiteDataReader = sqCommand.ExecuteReader()
            Dim j As Integer = sqReader.FieldCount
            While sqReader.Read()

'''''''''''''''''''''''Here, Don't know how to list the items from the query reult into the combo-box
                End While

            'Close Reader after use
            sqReader.Close()

        Catch ex As Exception
            'Show Message on Error
            MsgBox(ex.ToString)
        Finally
            'At Last Close the Connection
            sqConnection.Close()
        End Try
  

Ответ №1:

Я не совсем уверен, о чем вы спрашиваете, но я думаю, что это оно. В SelectedIndex измененном событии у вас будет что-то похожее на приведенный ниже код. Вы можете добавить If инструкцию, чтобы проверить, к чему вы запрашиваете, и соответствующим образом скорректировать свой запрос.

 Dim dt as New DataTable

Try
            Using sqlConn

            sqlConn.Open()

                Using cmd As New SqlCommand("your query")

                    cmd.Connection = sqlConn
                    cmd.CommandType = CommandType.Text


                   Dim reader as SqlDataReader = cmd.ExecuteReader()
                   dt.Load(reader)
                End Using


        End Using
    Catch ex As SqlException
        Throw New Exception(ex.Message)
    End Try

With yourComboBox
     .DataSource = dt
     .DataValueField = "columName you want to be the value of the item"
     .DataTextField = "columnName of the text you want displayed"
End With
  

Комментарии:

1. Как я могу это сделать, используя Data Reader вместо адаптера. Я слышал, что программа чтения данных быстрее

2. @Failed_Noob проверьте мой пост еще раз.

3. Выдает ошибку и сообщает, что DataValueField и DataTextField не являются членами выпадающего списка

4. @Failed_Noob, извините, я думал, что это asp.net тоже вопрос. Используйте: DisplayMember и ValueMember .

Ответ №2:

Обратите внимание на следующие свойства для выпадающего списка: AutoCompleteMode, AutoCompleteSource, AutoCompleteCustomSource.

Выберите соответствующий режим автозаполнения. Смотрите подробную информацию о различных режимах по этой ссылке. Для AutoCompleteSource выберите либо ListItems (в этом случае источником будут элементы выпадающего списка), либо CustomSource. Если вы выбираете CustomSource, задайте соответствующий источник в качестве значения свойства AutoCompleteCustomSource выпадающего списка.

Это должно предоставить вам достаточно подробностей, чтобы сделать то, что вы ищете. Другие перечисленные вами требования, такие как получение данных из базы данных SQLite или изменение имени сотрудника и номера сотрудника, не повлияют на то, как вы работаете с функцией автозаполнения.

Комментарии:

1. Пожалуйста, скажите мне, как ввести результат запроса в элемент списка со списком. Посмотрите на приведенный выше код