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

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

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

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

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

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

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

Есть идеи?

Ответы [ 2 ]

1 голос
/ 09 мая 2009

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

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

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

0 голосов
/ 02 сентября 2009

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

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

...