Chaibi Alaa
Chaibi Alaa

Reputation: 83

Filling Value to ListBox in Vb.Net

I need a simple way to fill the value from database of the current item being added so that I can use it later :

'Filling the MAIN Categories part
Dim DataAdapterCatm As New MySqlDataAdapter("SELECT id,title From catM;", MySqlConnection)
Dim dsMc As New DataTable
DataAdapterCatm.Fill(dsMc)
For counter = 0 To dsMc.Rows.Count - 1
    LbMCat.Items.Add(dsMc.Rows(counter).Item("title").ToString)
    'LbMCat.ValueMember = dsMc.Rows(counter).Item("id").ToString
'The above line don't work, I need something to replace it
Next

Upvotes: 0

Views: 4619

Answers (2)

BlackICE
BlackICE

Reputation: 8936

try this in place of both lines in your for loop:

LbMCat.Items.Add(New ListItem(dsMc.Rows(counter).Item("title").ToString(), dsMc.Rows(counter).Item("id").ToString())

In the constructor for ListItem you can specifiy both the value and the text for the ListItem

Upvotes: 1

shf301
shf301

Reputation: 31404

You are misunderstanding what ValueMember means. ValueMember is a string which represents the property that you wish to use as the value. In your case it would be just "id". Notice that it is a property of the ListBox - it is not different for each time.

ValueMember and the related DisplayMember are only valid when using DataBinding with the DataSource property and it not valid when manually adding items to the ListBox via Items.Add. What you want is the following:

Dim DataAdapterCatm As New MySqlDataAdapter("SELECT id,title From catM;", MySqlConnection)
Dim dsMc As New DataTable
DataAdapterCatm.Fill(dsMc)
LbmCat.DataSource = dsMc;
LbMCat.ValueMember = "id";
LbmCat.DisplayMember = "title";

Upvotes: 1

Related Questions