2013-07-19 2 views
0

В моем веб-приложении я динамически добавляю кнопку с именем «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 в. Я добавляю эту кнопку в управление календарем.

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

Design Page Code Behind

ответ

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() как вызов функции. Если эта функция не существует (и написана точно такая же), она никогда не остановит обратную передачу.

+0

Его работа для меня. Но дело в том, что я добавляю эту кнопку внутри элемента управления календарем, его не работает. – ognale88

+0

Ну ... не могли бы вы изменить код, чтобы показать еще немного о календаре ... –

+0

Извините @Brian Mains, вместо редактирования моего сообщения. Я отредактировал ваш комментарий. Мне очень жаль. – ognale88

Смежные вопросы