VB.Net 2010 - Получить MemberValue из ComboBox - PullRequest
2 голосов
/ 20 декабря 2011

Я работаю над этим уже три дня и просто не могу найти простой ответ. (Это действительно не может быть так сложно сделать неприлично). но теперь я больше не вижу деревьев для леса.

Я заполняю Combobox из базы данных SQL, это прекрасно работает, и данные отлично отображаются в визуализаторе набора данных.

ComboList называется cmbStateList

Два поля базы данных DisplayMember «Государство» ValueMember «ID»

Что я хочу сделать, это просто вернуть ValueMember, когда элемент выбран в выпадающем списке. Когда я использую «cmbStateList.SelectedValue» в cmbStateList_SelectedIndexChanged, то возвращается индекс или позиция элемента в списке, а не поле ValueMember («ID») данных.

Вот код, который я использую, очень надеюсь, что кто-нибудь поможет с этой простой проблемой

Загрузить список состояний:

SQL = "Select * from State"
Command = New SqlCommand(SQL, CNN)
DA.SelectCommand = Command
DA.Fill(DS, "State")

Свяжите ComboBox:

Me.cmbStateList.Items.Clear()
Me.cmbStateList.DataSource = DS.Tables("State")
Me.cmbStateList.DisplayMember = "State"
Me.cmbStateList.ValueMember = "ID"

Выберите ComboBox (пробовал DropDownClosed и SelectedIndexChanged):

Private Sub cmbStateList_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbStateList.SelectedIndexChanged
     MsgBox(Me.cmbStateList.SelectedValue)
End Sub

Заранее благодарю Chris

Ответы [ 3 ]

1 голос
/ 21 мая 2013

Это очень медленно, если у вас есть около 100000 записей:

Me.cmbStateList.DataSource = Nothing
Me.cmbStateList.DataSource = DS.Tables("State")
Me.cmbStateList.DisplayMember = "State"
Me.cmbStateList.ValueMember = "ID"

Это быстро, просто изменили порядок команд:

Me.cmbStateList.DataSource = Nothing
Me.cmbStateList.DisplayMember = "State"
Me.cmbStateList.ValueMember = "ID"
Me.cmbStateList.DataSource = DS.Tables("State")
0 голосов
/ 20 декабря 2011

Попробуйте это:

Привязать поле со списком

Me.cmbStateList.Items.Clear()
Me.cmbStateList.DisplayMember = "State"
Me.cmbStateList.ValueMember = "ID"
Me.cmbStateList.DataSource = DS.Tables("State")
Me.cmbStateList.SelectedIndex = 0

Получить выбранное значение

Чтобы проверить, добавьте ли вы его в обработчик событий нажатия кнопки.

MsgBox(Me.cmbStateList.SelectedValue.ToString())
0 голосов
/ 20 декабря 2011

Я не уверен на 100%, будет ли это иметь значение, но мы всегда устанавливаем наших членов перед источником данных. Я бы попробовал изменить ваш код следующим образом:

Me.cmbStateList.DataSource = Nothing
Me.cmbStateList.DisplayMember = "State"
Me.cmbStateList.ValueMember = "ID"
Me.cmbStateList.DataSource = DS.Tables("State")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...