title: Why I am getting System.Data.DataRowView” instead of real values from my Listbox in vb.net
body: <p>Could someone help here?</p>
  
  <p>I need to extract data from a Database into a combolistbox in VB.net. I have got the data, but now find that The first and the 'x' line need to be removed from the combolistbox (they are validation entries for another software) and shouldn't be selected for this application.</p>
  
  <p>I tried to simply remove the offending entries from lists by using :- cbCubeARivet.Items.RemoveAt(index), but had an error letting me know I cannot use "Items" with a DataSource.</p>
  
  <p>I decided to send the data to a listbox, and then try to transfer the entries to the combolistbox. This then lead me to getting multiple entries of System.Data.DataRowView in the combolist box. To demonstrate my problem I include an example code modified from MSDN.</p>
  
  <pre><code>Imports System
  Imports System.Windows.Forms
  Imports System.Drawing
  Imports System.Collections
  Imports System.Data.SqlClient
  
  Public Class Form1
  
      Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  
          ' Populate the list box using an array as DataSource. 
          Dim SQLConnectionString As String = "Data Source=HL605\RIVWARE;Database=RIVWARE;Integrated Security=true;"
          Dim mySQLConnection As New SqlConnection(SQLConnectionString)
          mySQLConnection.Open()
          Dim SQLDataTable As New System.Data.DataTable
  
          'Create new DataAdapter
          'Use DataAdapter to fill DataTable
          Dim mySQLDataAdapter = New SqlDataAdapter("SELECT * FROM [Rivware].[dbo].[RivetTypes]", mySQLConnection)
          mySQLDataAdapter.Fill(SQLDataTable)
          ListBox1.DataSource = SQLDataTable
          ListBox1.DisplayMember = "RivetType"
  
  
          'original code from MSDN
          'Dim USStates As New ArrayList()
          'USStates.Add(New USState("Alabama", "AL"))
          'USStates.Add(New USState("Washington", "WA"))
          'USStates.Add(New USState("West Virginia", "WV"))
          'USStates.Add(New USState("Wisconsin", "WI"))
          'USStates.Add(New USState("Wyoming", "WY"))
          'ListBox1.DataSource = USStates
  
          ' Set the long name as the property to be displayed and the short
          ' name as the value to be returned when a row is selected.  Here
          ' these are properties; if we were binding to a database table or
          ' query these could be column names.
  
          ' Bind the SelectedValueChanged event to our handler for it.
          AddHandler ListBox1.SelectedValueChanged, AddressOf ListBox1_SelectedValueChanged
  
          ' Ensure the form opens with no rows selected.
          ListBox1.ClearSelected()
      End Sub 'NewNew
  
      Private Sub ListBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As EventArgs)
          If ListBox1.SelectedIndex &lt;&gt; -1 Then
              TextBox1.Text = ListBox1.SelectedValue.ToString()
              ' If we also wanted to get the displayed text we could use
              ' the SelectedItem item property:
              ' Dim s = CType(ListBox1.SelectedItem, USState).LongName
          End If
  
      End Sub
  End Class 'ListBoxSample3
  
  Public Class USState
      Private myShortName As String
      Private myLongName As String
  
      Public Sub New(ByVal strLongName As String, ByVal strShortName As String)
           Me.myShortName = strShortName
           Me.myLongName = strLongName
      End Sub 'NewNew
  
      Public ReadOnly Property ShortName() As String
          Get
              Return myShortName
          End Get
      End Property
      Public ReadOnly Property LongName() As String
          Get
              Return myLongName
          End Get
      End Property
  End Class 'USState
  </code></pre>