2012-01-05 3 views
0

Я привязываю datatable к combobox.DataSource при загрузке. Затем я даю поле со списком DisplayMember и ValueMember (из столбца из двух разных столбцов). В SelectedIndexChanged из combobox я хотел бы использовать свойство SelectedValue для combobox, просто для проверки I MsgBox (combobox.SelectedValue), и я получаю «Аргумент« Запрос »не может быть преобразован в тип« String »». Почему он не отображает значение? :(VB.NET Bound ComboBox SelectedValue не отображает

OnLoad 
    cbCISoftware.DataSource = dbMaps.Tables("maps") 
    cbCISoftware.ValueMember = "id" 
    cbCISoftware.DisplayMember = "name" 

SelectedIndexChanged of cbCISoftware 
    MsgBox(cbCISoftware.SelectedValue) 

SelectedValue.ToString outputs 
    System.Data.DataRowView 
+0

Можете ли вы добавить код привязки данных и выделенный код, чтобы мы могли дважды проверить? –

+0

Добавил код! (также DisplayMember показывает штраф в форме) – Theveloper

ответ

1

Я считаю, что вопрос заключается в том, что вы должны связать DefaultView стола:

cbCISoftware.DataSource = dbMaps.Tables("maps").DefaultView 
+0

Единственное, OnLoad, когда он назначает источник данных, я должен создать исключение для combobox_SelectedIndexChanged, потому что он все еще выводит System.Data.DowRowView как SelectedValue (и он запускается только один раз), но после назначения источника данных он отлично работает. ОДНАКО, если вы поместили обработку исключений в SelectedValueChanged, это событие срабатывает дважды, а во второй раз с правильным значением. Благодаря! – Theveloper

0

Прежде всего вы должны быть уверены, что выбрали DropDownList в качестве DropDownStyle для Combobox и что привязка работает.

Затем вы должны заменить MsgBox(cbCISoftware.SelectedValue) с MsgBox(cbCISoftware.SelectedValue.ToString)

В противном случае для получения результата, MsgBox(cbCISoftware.Text) будет работать, но это, вероятно, не то, что вы ищете :-)

Я могу предоставить вам полный код, чтобы сделать обязательным, если вам это нужно.

Смежные вопросы