2017-01-25 3 views
0

Я немного ржавый, имея дело со списками. я объявил 2 публичных спискиИзвлечь вложенный список VB.NET

Public Shared individualDetails As New List(Of String) 
Public Shared catList As New List(Of List(Of String)) 

Кнопка Add для добавления строк в individualLists.

Protected Sub btnAddLevel_Click(sender As Object, e As EventArgs) Handles btnAddLevel.Click 

    individualDetails.Add(ddlCountry.SelectedItem.Value) 
    individualDetails.Add(txtAvailability.Text) 
    individualDetails.Add(txtRemarks.Text) 

    catList.Add(individualDetails) 

End Sub 

Пользователи имеют возможность сделать несколько добавляет добавить к catList.

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    For i As Integer = 0 To catList.Count 

     For x As Integer = 0 To individualDetails.Count 

      MsgBox(individualDetails(x)) 

     Next x 
    Next i 
End Sub 

У меня возникли проблемы с внутренней петлей. Я сделал отладку, и я знаю, что individualDetails будет содержать 6 элементов, если я добавлю дважды.

Могу ли я спросить, как добавить несколько списков в catList вместо комбинированного списка в catList? Я неправильно добавляю списки?

ответ

0

catList - это контейнер для списков. У вас есть только один список в контейнере, individualDetails. Ваш обработчик событий btnAddLevel продолжает добавлять новые записи в этот список, а не создавать новые списки.

individualDetails не должно быть переменной Public Shared; он должен быть локальным для обработчика событий:

Protected Sub btnAddLevel_Click(sender As Object, e As EventArgs) Handles btnAddLevel.Click 
    Dim individualDetails As New List(Of String) 

    individualDetails.Add(ddlCountry.SelectedItem.Value) 
    individualDetails.Add(txtAvailability.Text) 
    individualDetails.Add(txtRemarks.Text) 

    catList.Add(individualDetails) 

End Sub 

Вам нужно будет изменить код отладки, чтобы увидеть списки; используйте что-то вроде

For i As Integer = 0 To catList.Count - 1 
    Dim individualDetails = catList(i) 

    For x As Integer = 0 To individualDetails.Count - 1 

     MsgBox(individualDetails(x)) 

    Next x 
Next i 

Есть другие улучшения в коде, который вы могли бы сделать, но это должно вас заставить.

+0

Hi @prprcupofcoffee, отлично. он работает сейчас, однако я сделал небольшое изменение в цикле. Я добавил в .count - 1, иначе у него закончится индекс. спасибо за направление! –

+0

Я решил, что вы столкнетесь с этим :) Часть процесса! – prprcupofcoffee

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