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

StackOverflow https://stackoverflow.com/questions/840202

Вопрос

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

У меня есть страница ProductImages.aspx. Он показывает все изображения, связанные с этим продуктом, в динамически создаваемом списке. События привязаны к каждой картинке, чтобы вы могли обновить ее.

Это отлично работает.

Однако в конце у меня есть опция, которая позволяет мне добавить новое изображение. Это кнопка, которая запускает вызов метода AddImage.

Теперь происходит то, что оригинальные элементы управления создаются и добавляются на страницу с событиями. Затем вызывается событие кнопки, воссоздающее все существующие элементы управления изображением и новое. Добавьте эту точку в новый элемент управления изображением, созданный после того, как OnInit не имеет прикрепленных событий из-за событий, добавляемых ПОСЛЕ OnInit.

Я могу сделать Response.Redirect, чтобы перезагрузить страницу и запустить OnInit, чтобы снова связать события, но это выглядит очень не элегантно и разрушает смысл использования панелей обновления.

Есть идеи?

Это было полезно?

Решение

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

Или, возможно, используйте CollapsiblePanels из AjaxToolKit, чтобы скрыть и показать форму загрузки.

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

Другие советы

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

Одним свойством, которое отличается между начальной загрузкой и обратной передачей, является свойство Page.IsPostback, которое можно использовать для выполнения действий только при первой загрузке страницы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top