Цикл через динамически созданные элементы управления - PullRequest
0 голосов
/ 01 марта 2012

То, что я пытаюсь сделать, это динамически создать несколько выпадающих списков, а затем я хочу просмотреть их и обновить базу данных этими значениями, но проблема, с которой я сталкиваюсь, заключается в том, что я создаю выпадающие списки, но затем Я возвращаюсь, чтобы просмотреть их, их больше нет в панели. Я не знаю почему, но когда я отлаживаю, у меня в pnlTeacherSelect до 50 элементов управления, вплоть до нажатия кнопки, которая вызывает prcChoose.

Вызывается при загрузке страницы

Sub prcSetTeachers()
    For Each Subject In ds.Tables("Subject").Rows
        Dim Temp As New DropDownList
        pnlTeacherSelect.Controls.Add(Temp)
        Temp.ID = "drp" & Subject.Item(0) & "s" & Child.Item(0)
    Next
End Sub

Вызывается при нажатии кнопки

Sub prcChoose()
    For Each DropDownList In pnlTeacherSelect.Controls.OfType(Of DropDownList)

    'This is never executed

    Next
End Sub

Есть идеи, что это вызывает? Заранее спасибо!

1 Ответ

2 голосов
/ 01 марта 2012

Вы должны воссоздать все динамически созданные элементы управления на каждой обратной передаче (самое позднее в событии загрузки).Вы также должны убедиться, что они получают тот же идентификатор, что и раньше, чтобы инициировать события и поддерживать ViewState.

Если вам известно количество создаваемых элементов управления (которое может храниться в ViewState), вы можете получить идентификаториз переменной счетчика, добавив его к идентификатору элемента управления.Затем вы можете воссоздать их с правильным идентификатором в событии init страницы.

Рекомендуемые значения:

Или вы используете один из встроенных связанных с данными элементов управления , таких как Repeater , которые делают это автоматически.Вам нужно только установить их DataSource и позвонить DataBind ().

Вот мои ответы на похожие вопросы с реализациями:

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