2013-12-22 5 views
0

Я заполняю поле со списком с набором данных:Как отображать поле со списком selectedvalue?

ComboName.Items.Clear() 
DS = New DataSet 
DS.Tables.Add(New DataTable("DEMAND")) 
DA = New SqlDataAdapter("select * from DEMAND", CON) 
DA.Fill(DS, "DEMAND") 
ComboName.DataSource = DS.Tables(0) 
ComboName.DisplayMember = "name" 
ComboName.ValueMember = "id" 

Теперь я хочу, чтобы получить адрес с помощью ValueMember:

Private Sub ComboName_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboName.SelectedIndexChanged 
    Dim I as Integer = CType(ComboName.SelectedValue.ToString(), Integer) 

    CMD = New SqlCommand("select * from DEMAND where id=" & I, CON) 
    RDR = CMD.ExecuteReader() 
    If RDR.Read Then 
     TxtAdrs.Text = RDR!adrs 
    End If 
End Sub 

Но здесь я получаю сообщение об ошибке:

Неверное преобразование из строки "System.Data.DataRowView" в тип 'Integer'.

Может ли кто-нибудь сказать, что я делаю неправильно?

ответ

1

вашего ComboName.SelectedValue.ToString() возвращает имя класса

"System.Data.DataRowView" 

, который является поведением ToString()

Попробуйте получить конкретный столбец из DataRowView.

SelectedItem - это объект данных, привязанный к источнику данных ComboBox, который в данном случае является DataRowView.

Вам необходимо отправить SelectedItem в DataRowView, а затем извлечь из него соответствующее значение.

Вы можете сделать это следующим образом:

DataRowView oDataRowView = ComboName.SelectedItem as DataRowView; 
string sValue = ""; 

if (oDataRowView != null) { 
    sValue = oDataRowView.Row["YourFieldName"] as string; 
} 
+0

Большое спасибо. Он отлично работал. Я работаю в Интернете с 6 часов. Будьте здоровы.. – Dev

0

Я предполагаю, что ошибка в этой строке

Dim I as Integer = CType(ComboName.SelectedValue.ToString(), Integer) 

Используйте как этого

Dim I as Integer = CType(ComboName.SelectedValue, Integer) 

Надеется, что это помогает

+0

Я пытался, но небольшая другая ошибка: Преобразование из типа «DataRowView» к типу «Integer» не является допустимым. – Dev

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