Вам нужно выбрать оба поля ID
и Text
в вашем SQL.
Если вы выбрали ID
, вы можете использовать MsgBox TypeName(cboPosition.SelectedValue)
, чтобы определить тип выбранного значения. Это может помочь вам с отладкой.
РЕДАКТИРОВАТЬ: Если SelectedValue
возвращает DataRowView
, вы можете получить доступ к полю ID
следующим образом:
Dim myDataRowView As DataRowView = DirectCast(cboPosition.SelectedValue, DataRowView)
Dim myId as Integer = CInt(myDataRowView("CustomerID"))
Относительно того, почему SelectedValue
возвращает DataRowView
, хотя установлен правильный ValueMember
, я понятия не имею ...
EDIT2: я нашел причину, по которой SelectedValue
возвращает всю строку вместо ValueMember
: вам необходимо установить свойства в «правильном» порядке , т.е.
uxCustomerName.DisplayMember = "CustomerName"
uxCustomerName.ValueMember = "CustomerID"
uxCustomerName.DataSource = dt
(сначала DisplayMember
и ValueMember
, , затем DataSource
.)