8

I have searched SO & google, but I can't seem to get this to work. The code is in the codebehind click event of a "Cancel" button in my asp.net application but does not seem to close the popup window. Any ideas?

try
{
    if (btnCancel.Text == "Close")
    {
        String csName1 = "PopupScript";
        Type csType = this.GetType();

        ClientScriptManager cs = Page.ClientScript;
        if (!cs.IsClientScriptBlockRegistered(csType, csName1))
        {
            ClientScript.RegisterStartupScript(GetType(), "ClosePopup", "window.close();", true);
        }
    }
}  

Update: After postback, when I look at the source page, the only code I see related is:

//<![CDATA[
(function() {var fn = function() {$get("ToolkitScriptManager1_HiddenField").value = '';Sys.Application.remove_init(fn);};Sys.Application.add_init(fn);})();window.close();
document.getElementById('ValidationSummary1').dispose = function() {
    Array.remove(Page_ValidationSummaries, document.getElementById('ValidationSummary1'));
}
Csharp
  • 2,916
  • 16
  • 50
  • 77
  • Does the script get rendered on the postback, or no script at all? – Steven V May 10 '13 at 14:50
  • @Steven, not sure what you mean – Csharp May 10 '13 at 14:52
  • When you click your cancel button, and the postback happens, view the source of the page. Is the `window.close();` being outputted and just not honored by the browser, or is there an issue with the C# code you've posted. – Steven V May 10 '13 at 14:54
  • So your script is registered, and should be running. I'm going to guess the browser isn't allowing the window to close for some reason. Was your application the one who opened the window? Is it within the same domain? – Steven V May 10 '13 at 16:15
  • yes, application opened the window, and yes, same domain. – Csharp May 10 '13 at 16:16

2 Answers2

8

You can use this instead

ScriptManager.RegisterStartupScript(this.Page, GetType(), "ClosePopup", "window.close();", true);

or you can also try this one

Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "ClosePopup", "window.close();", true);

Have a Good day.

Kevin Shah
  • 1,589
  • 1
  • 13
  • 20
1

since I could not get the ClientScript to work as required, I did a workaround using the code below:

    function closeWin() {
        //If txt = 'cancel' then close;
        GetRadWindow().Close();
    }


<td align="center"><asp:Button runat="server" ID="btnClose" Text="Close" 
        OnClientClick="closeWin();return false;" onclick="btnClose_Click"/></td>
Csharp
  • 2,916
  • 16
  • 50
  • 77