Try this, I use it all the time
smodule is your sql connection string
Using sqlCon = New SqlConnection(sModule)
sqlCon.Open()
Dim cmd As New SqlCommand("your sql query which returns two values ", sqlCon)
cmd.ExecuteNonQuery()
Dim adp As New SqlDataAdapter(cmd)
Dim dt As New DataTable()
adp.Fill(dt)
lbWhich.DataSource = dt
lbWhich.DataTextField = "Category"
lbWhich.DataValueField = "ID"
lbWhich.DataBind()
sqlCon.Close()
End Using
You use a datatable that has two column that you fill from the DB, and than assign a column to the value and text fields of the listbox, but it will only show the text to the user.
Let me know if it helps or works