Цикл с уникальным идентификатором? - PullRequest
1 голос
/ 10 февраля 2010

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

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

Спасибо!

Ответы [ 3 ]

1 голос
/ 10 февраля 2010

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

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

0 голосов
/ 10 февраля 2010

если вы хотите выполнить цикл в списке, вы должны сделать это следующим образом

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

убедитесь, что на уровне проекта или класса опция выведена ВКЛ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...