2016-01-08 4 views
0

Я использую следующий код. В то время запуска в поле со списком отображается System.Data.DataRowView, а не название предмета из базы данныхVB.NET combobox отображает System.Data.DataRowView с базой данных доступа

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Try 
     Dim fillcon As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\tcs.accdb") 

     Dim asql As String = ("SELECT ItemName FROM Items ORDER BY ItemName") 
     Dim da As New OleDbDataAdapter(asql, fillcon) 
     Dim ds As New DataSet 
     da.Fill(ds) 
     ComboBox1.ValueMember = "ItemName" 
     ComboBox1.DataSource = ds.Tables(0) 
     ComboBox1.SelectedIndex = 0 
    Catch ex As Exception 
     MsgBox("ERROR : " & ex.Message.ToString) 
    End Try 

End Sub 

ответ

0

Вы должны указать .DisplayMember к одному из ваших полей, которые вы запрашиваете.

+0

, пожалуйста, поясните бит ясно –

+0

Когда вы установите DataSource для combobox, вы в основном взяли все DataRows и добавили их. Теперь, поскольку DataRow может содержать несколько полей, он добавляется как объект типа DataRowView. Вам нужно указать одно из полей этого запроса для отображения. В вашем случае вы запросили только одно поле в своем запросе, но объект этого не знает, поэтому вам все равно нужно указать, в каком столбце вашего запроса вы хотите отобразить. 'Combobox1.DisplayMember =" ItemPrice "нужно добавить в ваш код. –

+0

Но я хочу, чтобы в comboBox, как Combobox1.JisplayMember = "ItemName", отображалось другое имя базы данных. DisableMember = "ItemName" –

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