Модальное всплывающее окно на динамической кнопке

В своем веб-приложении я динамически добавляю кнопку с именем «Click Me!». На этапе 1 при нажатии кнопки должно отображаться окно предупреждения. На этапе 2 должно отображаться всплывающее окно. Я использую ModalPopupExtender для создания всплывающего окна. Проблема в том, что всплывающее окно просто мигает один раз, а не отображается постоянно. Приведенные ниже мои коды ... может ли кто-нибудь помочь мне избавиться от этого?

Page_OnLoad():
**************
     Button Button1=new Button();
     Button1.Text="Click Me !";
     Button1.ID="LogBut";
     Controls.Add(LogBut);

Этап 1:

      JavaScript:
      ***********
          function alert()
          {
             alert("Stage 1");
          }

      Code behind:
      ************
       LogBut.Attributes.Add("OnClick", "alert();");

2 этап:

      JavaScript:
      ***********
          var Modalpopup='<%=modalPermission.ClientID %>';
          function Popup()
          {
             $find(Modalpopup).show();
          }

     Design:
     *******
           <Ajax:ModalPopupExtender ID="modalPermission" runat="server" TargetControlID="Infield"
                   PopupControlID="divPermission"></Ajax:ModalPopupExtender>
           <asp:HiddenField ID="Infield" runat="server" />

     Code Behind:
     ************
           LogBut.Attributes.Add("OnClick", "Popup();");

Примечание. Я использую идентификатор скрытого поля в качестве идентификатора TargetControlId ModaPopupExtender. Я добавляю эту кнопку в элемент управления календарем.

Скриншоты календаря:

Страница дизайнаКод позади


person ognale88    schedule 19.07.2013    source источник


Ответы (1)


Модальные всплывающие окна не запоминают, что они должны показываться после всплывающего окна. Если вы прикрепляете всплывающее окно к кнопке, вам необходимо отключить обратную передачу на сервер. Скорее всего, ваша проблема в том, что кнопка показывает модальное окно, но также отправляет обратно, а при обратной передаче модальное окно не запоминает, что должно отображаться. Вы можете остановить обратную передачу, выполнив следующие действия: набор

UseSubmitBehavior='false'

на серверной кнопке, а затем в функции Popup выполните:

function Popup(e) {
   // stop button event propagation, which causes postback
   if (e.stopPropagation)
      e.stopPropagation();
   if (e.preventDefault)
      e.preventDefault();

   // show modal
}

И это должно предотвратить возврат кнопки на сервер.

РЕДАКТИРОВАТЬ: ваша функция сказала Popup, но ваш javascript отображает showpopup () как вызов функции. Если эта функция не существует (и написана точно так же), она никогда не остановит обратную передачу.

person Brian Mains    schedule 19.07.2013
comment
Это работает для меня. Но дело в том, что когда я добавляю эту кнопку в элемент управления Calendar, она не работает. - person ognale88; 22.07.2013
comment
Извините, @Brian Mains, вместо того, чтобы редактировать мой пост. Я отредактировал ваш комментарий. Мне очень жаль. - person ognale88; 22.07.2013
comment
Не проблема. Я починил это. Также отредактировал мой пост ... метод на сервере - showpopup (), в вашем примере кода есть Popup (). У них должно быть одно и то же имя. - person Brian Mains; 22.07.2013
comment
Просто измените имя функции на Popup () на стороне сервера для своего атрибута OnClick. - person Brian Mains; 22.07.2013
comment
Да ... имя функции изменено на showpopup () в коде позади. Но проблема все еще существует. - person ognale88; 22.07.2013
comment
Да, @Brian Mains ... Изменилось. - person ognale88; 22.07.2013
comment
позвольте нам продолжить это обсуждение в чате - person ognale88; 23.07.2013