Попытка содержать всплывающие окна, которые используют AjaxToolkit ModalPopUpExtender - PullRequest
0 голосов
/ 06 февраля 2009

У меня есть 3 вида всплывающих окон ajax, которые должны существовать на моем сайте. Я надеялся, что смогу просто создать пользовательский элемент управления для каждого и поместить панель и модальный всплывающий расширитель внутри каждого, но это, похоже, не работает Кто-нибудь пробовал это раньше или у вас есть рекомендации, как избежать дублирования кода для каждого всплывающего окна на разных страницах? Спасибо!

Ответы [ 3 ]

0 голосов
/ 06 февраля 2009

Ах, я понял мою проблему с пользовательским контролем, я считаю.

ModalPopUpExtender требует, чтобы свойство TargetID было установлено, в противном случае возникает ошибка. Поскольку это находится в UserControl, я просто создал фиктивную кнопку ссылки, которая ничего не делает, и я установил свойство видимым в false.

    <asp:LinkButton ID="lnkBlank" runat="server" Visible="false" />
    <asp:Panel ID="plContainer" style="display: none;" runat="server">
            Hello?
    </asp:Panel>
    <cc1:ModalPopupExtender ID="mpe" runat="server" 
            BehaviorID="test"
            TargetControlID="lnkBlank" 
            PopupControlID="plContainer" />

Видимо, это не понравится, и как только я установил для свойства visible значение true, оно начало работать. Не уверен, в чем причина TargetID, так как, я думаю, большинство всплывающих окон могут вызываться из нескольких ссылок на странице. Возможно, я до сих пор не совсем понимаю, как предполагается использовать этот элемент управления.

0 голосов
/ 13 июня 2009

Проблема со скрытой ссылкой как TrgetControlID заключается в том, что; когда вы устанавливаете его видимость как false, сервер также не отображает его. PopExtender не может найти элемент управления на странице.

Вместо установки его видимости в false, попробуйте применить стиль с display: none. Это должно работать!

0 голосов
/ 06 февраля 2009

Один из вариантов - записать всплывающие окна в пользовательском элементе управления asp.net (страница .ascx) и добавить их на нужные вам страницы. У вас должен быть открытый метод на странице ascx, который будет показывать всплывающее окно, и вызывать его с родительской страницы, когда это необходимо. Если у вас уже есть диспетчер скриптов на родительской странице, у вас не может быть второго на странице ascx, но кроме этого не должно быть ничего, что могло бы помешать этому работать. Надеюсь, это поможет!

edit: вот как выглядит мой модальный элемент управления всплывающими окнами ...

<cc1:ModalPopupExtender 
    ID="mpeClassroom" 
    BackgroundCssCLass="modalBackground"      
    runat="server"        
    CancelControlID="lbClose"
    OnOkScript="onOk()"
    TargetControlID="Button1" 
    PopupControlID="pnlClassroom">
</cc1:ModalPopupExtender>

в моем коде за страницей мой метод просто вызывает mpeClassroom.Show ();

...