Как я делаю фильтрацию данных в ComboBox Vb.Net - PullRequest
0 голосов
/ 11 декабря 2019

введите описание изображения здесь Мне нужна помощь, у меня есть некоторые названия стран в Combobox. Я хочу, чтобы сначала было шоу из (А), а затем из (В) в алфавитном порядке.

Dim connection As New SqlConnection("Data Source=PC1-PC;Initial Catalog=Test2;Integrated Security=True")
Dim command As New SqlCommand("select * from Table_6", connection)
Dim adapter As New SqlDataAdapter(command)
Dim table As New DataTable()

adapter.Fill(table)
ComboBox1.DataSource = table
ComboBox1.DisplayMember = "Country"

enter image description here

1 Ответ

0 голосов
/ 11 декабря 2019

Составьте список ваших стран. Затем отсортируйте список и добавьте в выпадающий список.

Private Sub OpCode()
    Dim Countries As New List(Of String) From {"Cabo Verde", "Ecuador", "Haiti", "Iraq", "El Salvador", "Djibouti", "France", "Bahrain",
   "Cameroon", "Guinea", "Albania", "Finland", "Italy", "Jordan", "Grenada", "Dominica"}
    Countries.Sort()
    ComboBox1.Items.AddRange(Countries.ToArray)
End Sub

РЕДАКТИРОВАТЬ

Хорошо, я вызываю интересующее вас поле "CountryName". Я предполагаю, что это второе поле в таблице с индексом 1.

Операторы Using...End Using гарантируют, что ваши объекты базы данных будут закрыты и удалены даже в случае ошибки. Вам не нужен DataAdapter;просто загрузите DataTable.

. Лучший способ получить отсортированный список - позволить базе данных выполнить работу, добавив предложение Order By.

Private Function GetCountryNames() As DataTable
    Dim dt As New DataTable
    Using cn As New SqlConnection("Data Source=PC1-PC;Initial Catalog=Test2;Integrated Security=True"),
            cmd As New SqlCommand("Select * From Tabel_6 Order By CountryName;", cn)
        cn.Open()
        dt.Load(cmd.ExecuteReader)
    End Using
    Return dt
End Function

Private Sub FillSortedCountriesCombo()
    ComboBox1.DataSource = GetCountryNames()
    ComboBox1.DisplayMember = "CountryName"
End Sub

Если для некоторыхпричина, вам нужно сделать сортировку в коде, тогда ...

Private Sub FillUnsortedCountriesCombo()
    Dim dt = GetCountryNames()
    Dim CountriesArray = (From row In dt.AsEnumerable
                          Order By row.Field(Of String)(1)
                          Select row("CountryName")).ToArray
    ComboBox1.Items.AddRange(CountriesArray)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...