2013-07-09 48 views
0

我需要一個簡單的方法來從當前項目的數據庫填補值被添加,這樣我可以在以後使用它:填充值到列表框控件在Vb.Net

'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 

回答

1

你是誤會什麼ValueMember手段。 ValueMember是一個字符串,表示您希望用作值的屬性。在你的情況下,它只是"id"。請注意,它是ListBox的屬性 - 每次都不相同。

ValueMember和相關DisplayMember使用數據綁定當與DataSource財產,它不是有效時通過手動Items.Add項目添加到列表框纔有效。你想要的是以下幾點:

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

而我該如何捕獲selectedvalue,因爲它現在拋出DataView錯誤爲String錯誤 –

+0

'SeletedValue'應該是上面代碼中的字符串。嘗試將'ValueMember'和'DisplayMember'賦值放在'DataSource'賦值的上方。 – shf301

+0

再次錯誤,這是錯誤:對象引用未設置爲對象的實例。 –

1

在嘗試這地方都行的for循環:

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

在構造函數中ListItem裏,可以指定這兩個值和ListItem文本

+0

你能幫我創建構造函數嗎? –

+0

我照你告訴我的那樣做了;這裏是建設者: 公共類列表項 共享標識爲字符串 共享標題爲字符串 結束類 –