ASP.NET AJAX вложенное обновлениеPanel modalPopup funkiness - PullRequest
2 голосов
/ 30 сентября 2008

Похоже, что в некоторых случаях, если вы в конечном итоге получаете вложенные modalPopups, обернутые updatePanels (я не знаю, что это идеал, и, вероятно, его следует реорганизовать, но это то, с чем мы работаем, из-за того, что некоторые из пользовательских элементов управления нам нужны для повторного использования были написаны), когда вы запускаете постбэк, который должен открыть вложенный modalPopup, вместо этого он закрывает родительский. Ради аргумента, если я устанавливаю точку останова и запускаю

((ModalPopupExtender)this.Parent.Parent.FindControl("modalPopupExtender'sID").Show();

прямо перед вызовом метода Show () дочернего modalPopup, он работает так, как мы изначально ожидали. Мне кажется, что, поскольку updatePanels вложены, они могут отправить обратно своего родителя, родительский modalPopup «не знает», что он должен показывать, и перезагружает видимость своей панели с нуля как ложную. Поскольку дочерний modalPopup затем вкладывается в родительскую панель, видимость которой равна false, вызов Show () для нее также не имеет никакого эффекта. Таким образом, вместо открытия другого modalPopup текущий закрывается. Это не ошибка, просто поведение, которого мы не ожидали, поэтому было трудно отследить его без исключения, но я думаю, что приведенное выше объяснение имеет смысл ... Если я неправильно понял проблему, уточните ее и просветите меня, потому что это, кажется, не происходит все время, я думаю, что это произойдет!
На данный момент для этой конкретной ситуации мы застряли в переписывании некоторых из этих элементов управления, чтобы не получить вложенные updatePanels, поэтому этого не происходит, но мне любопытно:
Кто-нибудь сталкивался с этой проблемой раньше, и вы придумали какой-нибудь умный обходной путь, который не включает в себя вызов FindControl () для повторного показа () рассматриваемого modalPopup?

1 Ответ

3 голосов
/ 30 сентября 2008

Я решил эту проблему!
Если изменить UpdateMode элемента UpdatePanel на «Условный», родительский элемент UpdatePanel не отправляет сообщение обратно, когда дочерний элемент UpdatePanel отправляет ответ, а затем их вложение вообще не является проблемой!
Я не уверен, почему UpdateMode = "Always" является значением по умолчанию, но урок усвоен.

...