Модальное всплывающее окно исчезает при обратной передаче

Я использую ModalPopupExtender:

<ajax:ModalPopupExtender ID="ModalPopupExtender2" runat="server" TargetControlID="dummyButton2" PopupControlID="DayEntryPanel" CancelControlID="Button3" BackgroundCssClass="backCSS"/>

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

Это открывается функцией JavaScript, которая делает

            document.getElementById("dummyButton2").click();

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

Я мог бы сделать что-то сумасшедшее, например, сохранить переменную, чтобы определить, должен ли я показывать всплывающее окно, и показать его на page_load, если эта переменная истинна, но, похоже, я обхожу проблему более всего. Мысли?

2 ответа

Смотрите раздел aspx,

        <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return Clicked()" /> //On this button click the popup appears.
     <asp:HiddenField ID="HiddenField1" runat="server" />
   <cc1:ModalPopupExtender ID="ModalPopupExtender1"  runat="server" 
                            PopupControlID="popupPanel"  TargetControlID="HiddenField1" BackgroundCssClass="ModClass"
                            OkControlID="button2" CancelControlID="button3" BehaviorID="mdlpop">
    </cc1:ModalPopupExtender>

   <asp:panel id="popuppanel" runat="server" style="display:none; width:200px; background-color:yellow; padding:20px;">
        <p>are you sure?</p>
        <asp:button id="button2" runat="server" text="ok" OnClientClick="Button1_Click()"   />
        <asp:button id="button3" runat="server" text="cancel" />
    </asp:panel>

Раздел Javascript, вызываемый button2:

    <script type="text/javascript" language="javascript">
    function Clicked()
    {                   
         $find('mdlpop').show(); //mdlpop is the BehaviorID in ModalPopupExtender1

          return false;      
    } 
    function Button1_Click()
    {
        alert("ok is pressed");
    }   

</script>

* ПРИМЕЧАНИЕ: * Затем установите идентификатор кнопки отмены как CancelControlID для ModalPopupExtender1, который автоматически удалит всплывающее окно при нажатии кнопки отмены. Также установите PopupControlID для ModalPopupExtender1 в качестве идентификатора вашего всплывающего элемента управления (здесь это popuppanel). Также targetcontrolID не может быть пустым, поэтому просто добавьте скрытое поле и присвойте ему свой идентификатор (другого значения для этого нет). Вы также можете установить OkControlID (здесь он установлен на button2) и определить операцию для его клиентской функции.

Надеюсь, это поможет вам разобраться в проблеме...

Это не очень хорошая идея, чтобы показать ваше всплывающее окно, сделайте ниже

<ajax:ModalPopupExtender ID="ModalPopupExtender2" runat="server" TargetControlID="dummyButton2" PopupControlID="DayEntryPanel" CancelControlID="Button3" BehaviourId="mpcPopup" BackgroundCssClass="backCSS"/>

смотрите, я предоставил идентификатор beahviour, теперь вы можете сделать ниже

$find("mpcPopup").show()//show me some popup's

скрыть всплывающее окно

$find("mpcPopup").hide();//zoot bye
Другие вопросы по тегам