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

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

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

Это прекрасно работает.

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

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

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

Любые идеи?


person CountZero    schedule 08.05.2009    source источник


Ответы (2)


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

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

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

person rvarcher    schedule 08.05.2009

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

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

person Sam Schutte    schedule 01.09.2009