2010-02-10 161 views
1

我有一個數據庫(使用Sqlite)的ID有一個主鍵與autoinc,加載到列表框控件的值。如果我正常地循環訪問數據庫,將數據庫的值添加到我的列表框中,我不能通過使用SelectedIndex來獲取ID,因爲索引不總是與ID相同,並且ID不一定總是索引。 :(這讓我很痛苦,當我想查詢刪除行,基於SelectedIndex。使用唯一ID循環?

我想通過ID刪除行,但我沒有辦法獲得該ID與我使用的循環(或做我?幫我把創意!),是否有我可以使用一些隱藏字段類型屬性?

謝謝!

+0

問題是沒有意義的。 SelectedIndex是列表框的索引而不是包含的主鍵值。 – 2010-02-10 01:40:35

+0

請務必指定winforms或web :) – 2010-02-10 01:40:57

回答

0

如果要循環在一個列表框,你應該做這樣的

Dim myBox As New ListBox 
    For Each item In myBox.Items 
     'do stuff with item 
    Next 

確保在項目級別或課程級別有選項推斷開

0

你永遠不能依靠SelectIndex奇偶校驗與你的數據庫;您應該使用SelectedValue並使用您的數據庫ID作爲ListItem值。

1

這取決於您將什麼項目添加到列表框中。如果您只是添加純字符串,則無法返回到ID。你需要的是一個包含你想顯示的ID和值的類。您可以通過覆蓋ToString方法來顯示該值。我VB是有點生疏,但這裏有一個僞例如:

Class Item 
    Property ID as Integer 
    Property Name as String 

    Sub New(ID as Integer, Name as String) 
     Me.ID = ID 
     Me.Name = Name 
    End Sub 

    Overrides Function ToString() as String 
     Return Name 
    End Function 
End Class 

使用類:

Box.Items.Add(new Item(ID, Name)) 
For Each Item as Item in Box.Items 
    Delete(Item.ID) 
End For 
+0

我將如何獲取,本身,項目ID和顯示它?我很迷茫,因爲我不是一個完全vb的智者,而是一個業餘愛好者。我擺弄着你所提供的東西!不勝感激! – 2010-02-10 02:02:41

+0

這取決於你如何從數據庫中獲得它。例如,如果您使用DataTable進行查詢,則可以獲取多個字段並將其讀出:新項目(CInt(行[「ID」]),CString(行[「Name」])) – 2010-02-10 02:18:23

+0

我正在使用Sqlite的SqlReader從數據庫中獲取它並將這些項插入到Listbox中。我正在尋找選定項目的ID和名稱,但遇到問題。如果我只是告訴你我想要的是什麼,這可能是最有意義的! txt_id.text = box.selecteditem(id) txt_name.text = box.selecteditem(name) – 2010-02-10 02:21:33