How to close the parent window from its child? How to close the parent window from its child? asp.net asp.net

How to close the parent window from its child?


protected void Button1_Click(object sender, EventArgs e){    ((RadAjaxManager)this.Parent.FindControl("RadAjaxManager1")).ResponseScripts.Add("CloseModal();");    RadAjaxManager1.ResponseScripts.Add("CloseModal();");}

If the CloseModal() event is firing correctly, you should be able to call window.close() within it. The RadWindows only exist in the context of the parent window so you should still be able to call window.close() which will close each window that's open.

Edit: although a bit off-topic, this link from Telerik shows you how to get a handle on the parent window from a RadWindow. Then you can call the close method client side to close the browser window (page1.aspx) which will close all subsequent RadWindows.

From this link:

The main difference between RadWindow and browser's popup is that just like any other DHTML element, RadWindow exists only in the context of the page in which it is created. It cannot leave the boundaries of the browser window.


You can do a bubble event by implement an interface a each parent. I try to illustrate my mind.

public interface IClosingParent{    void Close();}public class PageA : System.Web.Page, IClosingParent{    public void IClosingParent.Close()    {        //Code to close it or hide it    }}public class PageB : System.Web.Page, ClosingParent{    public void IClosingParent.Close()    {        ((IClosingParent)this.Parent).Close();        //Code to close it or hide it    }}public class PageC : System.Web.Page{            protected void ButtonClose_Click(object sender, EventArgs e)    {        ((IClosingParent)this.Parent).Close();        //Code to close it or hide it         }}

That includes you must declare the RadWindow into the parent. So in a hierarchical view that seems to be like that :

PageA : IClosingParent||-- PageB : IClosingParent    |    |-- PageC        |-- ButtonClose

I think you can with this solution manage the closing process like you want and change whenever or whatever you want.


This may sound rustic, but why don't you simply execute the server code you want to run before closing and then return to the client a bool parameter that allows it to run an if statement that closes the window (client-side) ?

PS : I'm thinking algorithmically, I don't have much experience with server-side C#.