У меня есть веб-форма ASP.NET, в которой я отображаю список элементов базы данных с помощью пользовательских элементов управления, генерируя пользовательские элементы управления динамически - работает нормально.
Также на странице есть выпадающий список asp:, заполненный элементами, которые можно добавить в этот список базы данных. Вместе с этим выпадающим меню у меня есть кнопка «ДОБАВИТЬ». Мое намерение состоит в том, чтобы пользователь выбирал элемент и нажимал на него, а затем в список пользовательских элементов управления в форме будет добавлен этот новый элемент.
У меня все это работает.
Моя проблема в том, что в пользовательском элементе управления есть кнопка «УДАЛИТЬ», которая удаляет выбранный элемент из списка. Это работает, ЗА ИСКЛЮЧЕНИЕМ, когда я добавляю новый элемент. Поскольку мое событие кнопки «Добавить» всегда вызывается после Page_Load, даже если я регенерирую список пользовательских элементов управления, события щелчка внутреннего пользовательского элемента управления не будут срабатывать, поскольку элементы управления не были созданы как часть Page_Load.
Мне нужно знать, что я делаю неправильно, или лучшие практики здесь, любые советы. Я пытался быть точным в описании проблемы, но если мне это не удалось, дайте мне знать, и я могу добавить больше деталей.
ПРОСТОЕ ВОССТАНОВЛЕНИЕ: мне нужно знать, как добавить динамически созданный пользовательский элемент управления на страницу с помощью события нажатия кнопки страницы, и при этом все еще должны запускаться события внутреннего щелчка (и т. Д.) Пользовательского элемента управления.
Спасибо за любую помощь.
РЕДАКТИРОВАТЬ: Основываясь на отзывах джентльменов здесь и проведя дальнейшие исследования, связанные с их предложениями, я в итоге реализовал решение, основанное на том, что представлено на этой странице:
http://ryanfarley.com/blog/archive/2005/03/11/1886.aspx
Вот фрагмент, показывающий, как я справился с этим. Этот фрагмент находится в моем обработчике событий PreInit. Не совсем элегантное оружие для цивилизованного века, но иногда бластер - это все, что вам нужно.
'Look to see if button for adding a new client number has been
'clicked. If so, call the sub to add the item NOW, so that it
'is able to have it's internal click events fire.
For Each control_string As String In Request.Form
Dim ctl As Control = Page.FindControl(control_string)
If (ctl IsNot Nothing) AndAlso (ctl.ID = "cmdAddClientNumber") Then
Me.AddClientNumberToList()
Exit For
End If
Next