2010-02-10 5 views
1

У меня есть база данных (с использованием Sqlite), у которой есть идентификатор, имеет первичный ключ с autoinc, который загружает значения в элемент управления списком. Если я обычно прохожу через базу данных, добавляя значения базы данных в свой список, я не могу получить идентификатор с помощью SelectedIndex, потому что индекс не всегда будет таким же, как идентификатор, и идентификатор не всегда будет индексом , :(Это делает его болезненным, когда я хочу запросить удаление строки на основе SelectedIndex.Петля с уникальным ID?

Я хочу удалить строку по ID, но у меня нет способа получить этот идентификатор с помощью цикла, который я использую (или Я? Помогите мне изобретательны!). есть ли какой-то скрытый атрибут типа поля можно использовать?

Спасибо!

+0

вопрос не имеет смысла. SelectedIndex - это индекс списка, а не значение первичного ключа. –

+0

Не забудьте указать winforms или web :) –

ответ

0

, если вы хотите, чтобы петля в ListBox вы должны сделать это так

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

убедитесь, что на уровне проекта или уровне класса опция infer ON

0

Вы никогда не можете полагаться на SelectIndex паритет с вашей базой данных; вы должны пойти с SelectedValue и использовать вашу базу данных ID как ListItem значение.

1

Это зависит от того, что вы добавляете в качестве элементов в свой список. Если вы просто добавляете простые строки, тогда нет способа вернуться к идентификатору. Вам понадобится класс, который содержит как идентификатор, так и значение, которое вы хотите отобразить. Вы отображаете значение, переопределяя метод 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

, как бы я начал получать сам по себе, идентификатор элемента и его отображение? я совсем потерялся, так как я не совсем vb wiz, а любитель. я возился с тем, что вы поставили! оценили! –

+0

Это зависит от того, как вы получаете его из базы данных. Например, если вы запрашиваете использование DataTable, вы можете получить несколько полей и прочитать их: new Item (CInt (строка ["ID"]), CString (строка ["Name"])) –

+0

Я использую Sqlite SqlReader, чтобы получить его из базы данных и вставить элементы в список. Я ищу, чтобы получить id и имя selecteditem, но у меня проблема. Вероятно, это имеет смысл, если я просто покажу вам, что я хочу работать! txt_id.text = box.selecteditem (id) txt_name.text = box.selecteditem (name) –

Смежные вопросы