如何在服务器端关闭radwindow并刷新父页面

Any*_*are 6 javascript c# asp.net telerik radwindow

我想关闭RadWindow并刷新父级:如何执行此服务器端:

我有以下情况:

两页说:

parent.aspx:

<telerik:RadWindowManager ID="RadWindowManager1" runat="server" EnableViewState ="false">
</telerik:RadWindowManager>
Run Code Online (Sandbox Code Playgroud)

和parent.cs

  protected void OpenNewWindow(string url, int width, int height,int mode)
        {
            RadWindow newWindow = new RadWindow();
            newWindow.NavigateUrl = url;
            newWindow.VisibleOnPageLoad = true;
            newWindow.KeepInScreenBounds = true;
            if (width > 0)
            {
                newWindow.Width = width;


            }
            if (height > 0)
            {
                newWindow.Height = height;
            }
            newWindow.VisibleStatusbar = false;
            if (mode == 0)
            {
                newWindow.DestroyOnClose = true;
                newWindow.InitialBehaviors = WindowBehaviors.Maximize;
            }
            RadWindowManager1.Windows.Add(newWindow);
        }
Run Code Online (Sandbox Code Playgroud)

我在我的父页面上的某个gridview的rowcommand中调用此方法:

像这样 :

OpenNewWindow("child.aspx", 0, 0,0);
Run Code Online (Sandbox Code Playgroud)

现在我想在服务器端单击child页面上某个按钮的事件来关闭rad窗口并刷新父窗口如何做到这一点?

Win*_*Win 8

正如你所说,你想要从背后的代码关闭.所以你可以Page.ClientScript.RegisterClientScriptBlock(GetType(), "CloseScript", "refreshParentPage()", true);从后面的代码渲染来刷新父代.

只需在子页面中添加以下代码和脚本即可.父页面中不需要代码.

<script>         
    function getRadWindow() {
        var oWindow = null;
        if (window.radWindow)
            oWindow = window.radWindow;
        else if (window.frameElement.radWindow)
            oWindow = window.frameElement.radWindow;
        return oWindow;
    }

    // Reload parent page
    function refreshParentPage() {
        getRadWindow().BrowserWindow.location.reload();
    }
</script>

<asp:Button runat="server" Text="Close" ID="CloseButton" 
    OnClick="CloseButton_Click"/>

protected void CloseButton_Click(object sender, EventArgs e)
{
    Page.ClientScript.RegisterClientScriptBlock(GetType(), 
        "CloseScript", "refreshParentPage()", true);
}
Run Code Online (Sandbox Code Playgroud)

更新:

// Redirect page page to url
function redirectParentPage(url) {
    getRadWindow().BrowserWindow.document.location.href = url;
}

// Code behind
Page.ClientScript.RegisterClientScriptBlock(GetType(), 
"CloseScript", "redirectParentPage('Parent.aspx')", true);
Run Code Online (Sandbox Code Playgroud)


McC*_*Cee 5

您应该使用getRadWindow().close()方法和OnClientClose事件.

在Child.aspx上:

<script type="text/javascript">

    function getRadWindow() {
        var oWindow = null;

        if (window.radWindow) 
            oWindow = window.radWindow;
        else if (window.frameElement.radWindow) 
            oWindow = window.frameElement.radWindow;

        return oWindow;
    }

    function clientClose(arg) {   
        getRadWindow().close(arg);
    }

</script>
Run Code Online (Sandbox Code Playgroud)

在Child.cs中:

protected void btn_Click(object sender, EventArgs e)
{         
    ScriptManager.RegisterStartupScript(Page, typeof(Page), "closeScript", "clientClose('');", true);
}
Run Code Online (Sandbox Code Playgroud)

在Parent.cs中创建RadWindow时,添加OnClientClose事件:newWindow.OnClientClose = "OnChildWindowClosed";.

在Parent.aspx上:

<script type="text/javascript">

    function OnChildWindowClosed(sender, eventArgs) {
        document.location.reload(); // there may be a cleaner way to do the refresh
    }

</script>
Run Code Online (Sandbox Code Playgroud)