views:

1070

answers:

2

I am using a asp.net ModalPopupExtender on a page, and would like to prevent the dialog from hiding when the user presses the ok button in certain conditions. But I can't seem to find a way.

What I am looking for is something like this

ajax:ModalPopupExtender ... OnOkScript="return confirm('You sure?')" ...

if confirm is false, then the modal dialog doesn't disappear.

+1  A: 

From my understanding in your specific situation you would not wire up the button, and just wire up a script to handle the conditional, then you can close it via JS.

Mitchel Sellers
+1  A: 

The following JavaScript function will allow you to achieve this:

function conditionalHide(clientID)
{
    if (confirm('You sure?'))
    {
        $find(clientID).hide();
    }
}

You can wire this up to your asp:Button control in the Page_Load event of your page

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        btnOK.OnClientClick = string.Format("conditionalHide('{0}'); return false;",
            panPopup_ModalPopupExtender.ClientID);
    }
}

Some notes:

  • panPopup_ModalPopupExtender is your ModalPopupExtender
  • The return false; prevents a postback from occurring when the user clicks the button
  • You could hard-code the ClientID of the ModalPopupExtender, but this introduces an (additional) maintainance headache. The approach shown is the best one that I've found to alleviate this overhead
Richard Ev