ModalPopupExtender - как показать только при соблюдении определенных условий? - PullRequest
1 голос
/ 31 мая 2011

Я работаю с ModalPopupExtender. Нажатие кнопки (которая является TargetControlID из ModalPopupExtender) вызывает javascript, который проверяет некоторые условия. Мое требование: я хочу показывать всплывающее окно, только если определенное условие выполняется, в противном случае скрыть его.

Вот код. Функция скрытия здесь не работает. Всплывающее окно появляется, даже если вызвана функция hide ().

function ShowAlert()
{
    if (selBtn == "" || selBtn == null)
    {
        alert("Please select scrip/scheme first");
        var modalPopup = $find('<%=ModalPopupExtender2.ClientID %>');
        if (modalPopup != null)
        {
            modalPopup.hide();
        }
        return false;
    }
}

-----------------------------------------------

<table width="100%" border="0" cellpadding="0" cellspacing="0">
   <tr>
     <td valign="top" align="center">
       <asp:Button ID="btnSet" runat="server" Text="Set Alerts" OnClientClick="ShowAlert();" />
       <cc1:ModalPopupExtender ID="ModalPopupExtender2" runat="server" BehaviorID="ModalBehaviour2" TargetControlID="btnSet" PopupControlID="pnlPopupU" DropShadow="false" X="100" Y="200" BackgroundCssClass="Inactive"></cc1:ModalPopupExtender>
     </td>
   </tr>
</table>

Ответы [ 2 ]

0 голосов
/ 04 ноября 2016

В коде вы можете сделать:

if (true)
{
var script = @"Sys.Application.add_load(function() { $find('behavoirIDModal').show(); });";
ScriptManager.RegisterStartupScript(this, GetType(), "ShowPopup", script, true);
}

и в aspx вы делаете:

   <asp:Panel runat="server" ID="pnlSalvo">
        <asp:Button ID="btnClose" runat="server" Text="Fechar" />
    </asp:Panel>
    <ajaxToolkit:ModalPopupExtender ID="ModalResultado" BehaviorID="acao" runat="server" PopupControlID="pnlSalvo"
        TargetControlID="btnShow"
        CancelControlID="btnClose">
    </ajaxToolkit:ModalPopupExtender>
    <asp:Button ID="btnShow" runat="server" Text="Modal" Visible="true"  />
0 голосов
/ 31 мая 2011

У меня была похожая ситуация, и я не смог заставить ее работать с Javascript.Вместо этого я сделал проверку условий и отображение modalpopup на стороне сервера.Решение было не таким чистым, как с клиентским javascript, но по крайней мере я заставил его работать и перешел.

If Condition == true then modalPopUp.Show()

В вашей панели pnlPopU поместите кнопку (CancelControlID из modalpopupextender) и добавьте событие onclientclick в неескрыть всплывающее окно.

var modalPopup = $find('<%=ModalPopupExtender2.ClientID %>');
modalPopup.hide();

Редактировать: Еще одно решение: 1) Добавить скрытую кнопку (отображать: нет) и назначить ее для TargetControlID modalPE. 2) При событии щелчка клиента btnSet выполните проверку состояния, и еслиусловие выполнено, затем выполните скрытое событие нажатия кнопки (которое вызывает modalPE)

...