在Vb.Net中填充ListBox的值

时间:2013-07-09 03:02:06

标签: vb.net listbox

我需要一种简单的方法来填充正在添加的当前项目的数据库中的值,以便我以后可以使用它:

'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

2 个答案:

答案 0 :(得分:1)

你误解了ValueMember的含义。 ValueMember是一个字符串,表示您希望用作值的属性。在你的情况下,它只是"id"。请注意,它是ListBox的属性 - 每次都没有区别。

ValueMember和相关的DisplayMember仅在使用带有DataSource属性的DataBinding时有效,并且在通过Items.Add手动将项添加到ListBox时无效。你想要的是以下几点:

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";

答案 1 :(得分:1)

尝试使用for循环代替两行:

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

ListItem的构造函数中,您无法同时指定ListItem的值和文本