How to close RadWindow after save?

21 posts, 0 answers
  1. Wai Loon Ho
    Wai Loon Ho avatar
    11 posts
    Member since:
    Aug 2009

    Posted 08 Jul 2010 Link to this post

    Hi All,

    I have a link to popup a RadWindow.
    This is working fine.

    On the popup window, I have 3 radio button (Excel, PDF, CSV) and 2 buttons (Save As, Close).
    This is working fine.

    When user click on 'Save As' button, system will show a 'Save As' window to user to choose the file name and file location.
    System will then export the data to the format they choose.
    This is working fine.

    When user click on 'Close' button, system will close the popup window.
    This is working fine too.

    Now, the problem is the popup window didn't close after the data is exported.
    I think this is due to the system still need to continue to do the export even I have the close at the end of the function.

    Please help.

    Parent code.
        <telerik:RadWindowManager ID="reportSettingsWindowManager" KeepInScreenBounds="true" 
            runat="server" VisibleStatusbar="false" DestroyOnClose="true" Modal="true" Behaviors="Close,Move">  
            <Windows> 
                <telerik:RadWindow ID="downloadWindow" DestroyOnClose="true" runat="server" Modal="true" 
                    VisibleStatusbar="false" Behaviors="Close,Move" /> 
            </Windows> 
        </telerik:RadWindowManager> 
        <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">  
     
            <script language="javascript" type="text/javascript">  
                function fnCustomizeDownload(name) {  
                    var radWindowMgr = $find("<%= reportSettingsWindowManager.ClientID %>")  
                    var wnd = radWindowMgr.open('<asp:Literal ID="ltrlDownloadFormat" runat="server" />', name);  
                    wnd.setSize(300, 225);  
                    wnd.show();  
                    return false;  
                }  
     
            </script> 
     
        </telerik:RadScriptBlock> 
     
        <div id="content">  
            <ul id="actions">  
                <li id="liDownloadData" runat="server"><href="#" onclick="fnCustomizeDownload('downloadWindow');return false;">  
                    <asp:Literal ID="ltrlDownloadData" runat="server" Text="<%$ Resources:Link, ltrlDownloadData %>" /> 
                </a></li>  
            </ul> 
        </div> 
     

    Child ASPX Code
        <telerik:RadScriptBlock ID="scriptBlock1" runat="server">  
     
            <script language="javascript" 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;  
                }  
     
        <table style="width: 220px">  
        <tr> 
            <td colspan="2" class="style1">  
            <asp:Panel ID="Panel2" runat="server"  GroupingText="<%$ Resources:ltrlDownloadGroupingText %>" 
                     Height="99px">  
            <asp:RadioButtonList ID="SelRadioButtonList1" runat="server" Height="55px"   
                    Width="211px">                  
                    <asp:ListItem Selected="True" Text="<%$ Resources:ltrlDownloadExcel %>"></asp:ListItem> 
                    <asp:ListItem Text="<%$ Resources:ltrlDownloadPDF %>"></asp:ListItem> 
                    <asp:ListItem Text="<%$ Resources:ltrlDownloadCSV %>"></asp:ListItem> 
            </asp:RadioButtonList> 
            </asp:Panel> 
            </td> 
        </tr> 
        <tr> 
            <td> 
                <asp:Button ID="btnSaveAs" runat="server" Text="<%$ Resources:Button, btnSaveAs %>" OnClick="btnSaveAs_Click" /> 
            </td> 
            <td> 
                <asp:Button ID="btnClose" runat="server" Text="<%$ Resources:Button, btnClose %>" OnClick="btnClose_Click" /> 
            </td> 
        </tr> 
        </table>    
     
                function Close()  
                {  
                    var arg = new Object();  
                    var oWnd = GetRadWindow();  
                    oWnd.close(arg);  
                }  
     
            </script> 
     
        </telerik:RadScriptBlock> 
     

    Child C# Code
            protected void btnSaveAs_Click(object sender, EventArgs e)  
            {  
                Logger.LogInformation("Start""btnSaveAs_Click""DownloadFormat");  
                DownloadData();  
                lblCloseWindow.Text = GetRadWindowCloseScript();  
                Logger.LogInformation("End""btnSaveAs_Click""DownloadFormat");  
            }  
     
            protected void btnClose_Click(object sender, EventArgs e)  
            {  
                Logger.LogInformation("Start""btnClose_Click""DownloadFormat");  
                lblCloseWindow.Text = GetRadWindowCloseScript();  
                Logger.LogInformation("End""btnClose_Click""DownloadFormat");  
            }  
     
            private void DownloadData()  
            {  
                Logger.LogInformation("Start""DownloadData""DownloadFormat");  
                //CSV  
                if (SelRadioButtonList1.SelectedItem.Text == SelRadioButtonList1.Items[2].Text)  
                {  
                    this.SetCSVDelimiter();  
                    this.radGrid.MasterTableView.ExportToCSV();  
                }  
                //Excel  
                else if (SelRadioButtonList1.SelectedItem.Text == SelRadioButtonList1.Items[0].Text)  
                {  
                    this.radGrid.MasterTableView.ExportToExcel();  
                }  
                //PDF  
                else if (SelRadioButtonList1.SelectedItem.Text == SelRadioButtonList1.Items[1].Text)  
                {  
                }  
                Logger.LogInformation("End""DownloadData""DownloadFormat");  
            }  
     
            public static string GetRadWindowCloseScript()  
            {  
                return @"
                <script type='text/javascript'>
                    var oWindow = null; 
                    if (window.radWindow) 
                        oWindow = window.radWindow; 
                    else if(window.frameElement.radWindow) 
                        oWindow = window.frameElement.radWindow; 
                    var currentWindow = oWindow; 
                    currentWindow.Close();
                </script>";  
            }  
     

  2. Shinu
    Shinu avatar
    17764 posts
    Member since:
    Mar 2007

    Posted 08 Jul 2010 Link to this post

    Hello,


    Consider the RegisterStartupScript() server method to invoke the client function than injecting the script and see whether it helps. I believe that this blog post will be of help.


    -Shinu.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Wai Loon Ho
    Wai Loon Ho avatar
    11 posts
    Member since:
    Aug 2009

    Posted 08 Jul 2010 Link to this post

    Hi Shinu,
    Thanks for the reply.
    Actually I tried this method also. It gave me the same result. The RadWindow popup still failed to close by itself.
    User still need to click on the 'Close' button to close the popup.
    protected void btnSaveAs_Click(object sender, EventArgs e)
    {
        Logger.LogInformation("Start", "btnSaveAs_Click", "DownloadFormat");
            DownloadData();
            if (!Page.ClientScript.IsStartupScriptRegistered("CloseWindow"))
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "CloseWindow", "Close();", true);
            }
        Logger.LogInformation("End", "btnSaveAs_Click", "DownloadFormat");
    }
  5. Lynn
    Lynn avatar
    186 posts
    Member since:
    Sep 2006

    Posted 21 Aug 2010 Link to this post

    I have had similar issues when using the RadWindow and attempting to use the RegisterStartupScript() process to close the RadWindow after the processing within the RadWindow is complete.  Googling the Internet produces many recommendations to use the same RegisterStartupScript -- which I have never been able to get to work correctly.

    As a workaround, I have since resorted to (from the code behind portion of the RadWindow) performing a Response.Redirect to a "special" .aspx I create for each of these situations...this "special page" contains very little code:
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="UserIsLoggedOn.aspx.vb" Inherits="UserIsLoggedOn" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <head runat="server">
        <title></title>
    </head>
    <body onload="returnToParent();">
        <form id="form1" runat="server">
        <div>
          
        </div>
        </form>
    </body>
        <script type="text/javascript">
            function returnToParent() {
                //create the argument that will be returned to the parent page
                var oArg = new Object();
                oArg.selSSO = "Y";
                //get a reference to the current RadWindow
                var oWnd = GetRadWindow();
                //Close the RadWindow and send the argument to the parent page
                oWnd.close(oArg);
            }
            function GetRadWindow() {
                var oWindow = null;
                if (window.radWindow) oWindow = window.radWindow;
                else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;
                return oWindow;
            }
        </script>
    </html>
    Please note that there is no "code behind" for the "special page".  If needed, one could also pass data field values to the "special page" via the query string and use them as arguments when returning to the parent.  This method has resolved my issues.  It's not pretty, but it does seem to work predictably for me.

    If you should discover any "secrets" to making the "RegisterStartupScript()" process work correctly, I would love to know them!

    Lynn
  6. Cori
    Cori avatar
    562 posts
    Member since:
    Jul 2010

    Posted 23 Aug 2010 Link to this post

    Hello Wai,

    I noticed that you have your entire page enclosed in the script tag. Why not try moving your table outside of the script tag and see if that helps.

    Also, for Lynn, instead of using RegisterStartupScript, why not just use RegisterClientScriptBlock. It's always worked for me using RegisterClientScriptBlock.

    I hope that helps.
  7. Justin
    Justin avatar
    11 posts
    Member since:
    Aug 2006

    Posted 28 Mar 2011 Link to this post

    Wai,

    Did you ever find a viable solution for this issue.  I'm having the same issue.

    thanks
  8. Svetlina Anati
    Admin
    Svetlina Anati avatar
    2795 posts

    Posted 31 Mar 2011 Link to this post

    Hi Justin,

     Basically, what you should do is to execute closing script from the server. If you have tried this but it still does not work, please prepare a sample, fully runnable code (use a fake programmatic datasource of needed) and share the full source code here. Once you provide this, we will built up a test demo and debug and fix it on our side so that you will be then able to apply the same logic in your original application.

    Kind regards,
    Svetlina
    the Telerik team
  9. Justin
    Justin avatar
    11 posts
    Member since:
    Aug 2006

    Posted 31 Mar 2011 Link to this post

    Here is a simple sample.  This sample uses a radwindow to select export options and used RadGrid for exporting.  Once the grid is exported the window should then be closed.  I cannot get it to close.

    default.aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="Test_Site._default" %>
      
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
            </telerik:RadScriptManager>
      
            <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
                <script type="text/javascript">
                    function RadContextMenu1_ClientItemClicked(sender, args) {
                        var itemValue = args.get_item().get_value();
                        if (itemValue == "Export") {
                            var dialogPath = '<%= ResolveClientUrl("~") + "exportgrid.aspx" %>';
                            window.radopen(dialogPath, "ExportGridDialog");
                        }
                        return false;
                    }
                </script>
            </telerik:RadScriptBlock>
      
            <telerik:RadWindowManager ID="RadWindowManager1" runat="server">
                <Windows>
                    <telerik:RadWindow ID="ExportGridDialog" runat="server" Title="Export Grid" Height="300px" Width="400px" Modal="true" ReloadOnShow="true"
                        ShowContentDuringLoad="false" Behaviors="Move,Close,Reload" VisibleStatusbar="false" ></telerik:RadWindow>
                </Windows>
            </telerik:RadWindowManager>
      
            <telerik:RadContextMenu ID="RadContextMenu1" runat="server" EnableRoundedCorners="true" OnClientItemClicked="RadContextMenu1_ClientItemClicked">
                <Targets>
                    <telerik:ContextMenuControlTarget ControlID="rgTest" />
                </Targets>
                <Items>
                    <telerik:RadMenuItem Text="Export" Value="Export" />
                </Items>
            </telerik:RadContextMenu>
            Right Click on Grid to view Context Menu
            <telerik:RadGrid runat="server" ID="rgTest" onneeddatasource="rgTest_NeedDataSource">
            </telerik:RadGrid>
        </form>
    </body>
    </html>

    default.aspx.cs
    using System;
    using System.Data;
      
    namespace Test_Site
    {
        public partial class _default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    rgTest.DataSource = GenerateTestData();
                    rgTest.DataBind();
                }
            }
      
            private DataTable GenerateTestData()
            {
                DataTable testData = new DataTable();
      
                testData.Columns.Add(new DataColumn("Column1"));
                testData.Columns.Add(new DataColumn("Column2"));
                testData.Columns.Add(new DataColumn("Column3"));
                testData.Columns.Add(new DataColumn("Column4"));
                testData.Columns.Add(new DataColumn("Column5"));
      
                for (int i = 0; i <= 10; i++)
                    testData.Rows.Add(new object[] { "1", "2", "3", "4", "5" });
      
                return testData;
            }
      
            protected void rgTest_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
            {
                rgTest.DataSource = GenerateTestData();
            }
        }
    }

    exportgrid.aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="exportgrid.aspx.cs" Inherits="Test_Site.exportgrid" %>
      
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
            </telerik:RadScriptManager>
      
            <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 CloseDialog() {
                    GetRadWindow().close();
                    return false;
                }
            </script>
      
            <div style="height: 21px; margin: 5px; background-color: #747e96; color: white; width: 96%; font-size: 15px; font-weight: bold; padding: 5px;">
                Export Grid Data
            </div>
            <asp:label runat="server" ID="lblErrorMessage" ForeColor="Red"></asp:label>
            <table>
                <tr>
                    <td style="vertical-align: top;">
                        File Type:
                    </td>
                    <td>
                        <asp:RadioButtonList ID="rblFileType" runat="server">
                            <asp:ListItem Text="CSV (Comma Delimited)" Value="CSV" Selected="True" />
                            <asp:ListItem Text="TXT (Tab Delimited)" Value="TXT" />
                            <asp:ListItem Text="XLS (Excel File)" Value="XLS" />
                        </asp:RadioButtonList>
                    </td>
                </tr>
                <tr>
                    <td>
                        File Name:
                    </td>
                    <td>
                        <asp:TextBox runat="server" ID="txtFileName" Width="250px"></asp:TextBox>
                        <asp:RequiredFieldValidator runat="server" ID="rfvFileName" ControlToValidate="txtFileName" Text="*" ForeColor="Red" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2" style="text-align: right;">
                        <br />
                        <asp:Button runat="server" ID="btnCancel" Text="Cancel" OnClientClick="return CloseDialog();" CausesValidation="false" />
                              
                        <asp:Button runat="server" ID="btnExport" Text="Export" onclick="btnExport_Click" />
                    </td>
                </tr>
            </table>
        </form>
    </body>
    </html>

    exportgrid.aspx.cs
    using System;
    using Telerik.Web.UI;
    using System.Data;
      
    namespace Test_Site
    {
        public partial class exportgrid : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
      
            }
      
            protected void btnExport_Click(object sender, EventArgs e)
            {
                switch (rblFileType.SelectedValue.ToUpper())
                {
                    case "CSV":
                        ExportToCSV();
                        break;
                    case "TXT":
                        ExportToTXT();
                        break;
                    case "XLS":
                        ExportToExcel();
                        break;
                }
            }
      
            private void ExportToCSV()
            {
                try
                {
                    RadGrid NewRG = new RadGrid();
                      
                    NewRG.ID = "rgExportGrid";
                    NewRG.DataSource = GenerateTestData();
      
                    NewRG.ClientSettings.DataBinding.EnableCaching = true;
                    NewRG.ExportSettings.FileName = txtFileName.Text;
                    NewRG.ExportSettings.OpenInNewWindow = true;
                    NewRG.ExportSettings.Csv.RowDelimiter = GridCsvDelimiter.NewLine;
                    NewRG.ExportSettings.Csv.FileExtension = "csv";
                    NewRG.ExportSettings.Csv.ColumnDelimiter = GridCsvDelimiter.Comma;
                    NewRG.ExportSettings.IgnorePaging = true;
                    NewRG.ExportSettings.ExportOnlyData = true;
                    NewRG.NeedDataSource += new GridNeedDataSourceEventHandler(ExportGrid_NeedDataSource);
                    Page.Controls.Add(NewRG);
                    NewRG.DataBind();
      
                    NewRG.MasterTableView.ExportToCSV();
                    AddCloseScript();
                }
                catch (Exception ex)
                {
                    lblErrorMessage.Text = ex.Message;
                }
            }
      
            private void ExportToTXT()
            {
                try
                {
                    RadGrid NewRG = new RadGrid();
      
                    NewRG.ID = "rgExportGrid";
                    NewRG.DataSource = GenerateTestData();
      
                    NewRG.ClientSettings.DataBinding.EnableCaching = true;
                    NewRG.ExportSettings.FileName = txtFileName.Text;
                    NewRG.ExportSettings.OpenInNewWindow = true;
                    NewRG.ExportSettings.Csv.RowDelimiter = GridCsvDelimiter.NewLine;
                    NewRG.ExportSettings.Csv.FileExtension = "txt";
                    NewRG.ExportSettings.Csv.ColumnDelimiter = GridCsvDelimiter.Tab;
                    NewRG.ExportSettings.IgnorePaging = true;
                    NewRG.ExportSettings.ExportOnlyData = true;
                    NewRG.NeedDataSource += new GridNeedDataSourceEventHandler(ExportGrid_NeedDataSource);
                    Page.Controls.Add(NewRG);
                    NewRG.DataBind();
      
                    NewRG.MasterTableView.ExportToCSV();
                    AddCloseScript();
                }
                catch (Exception ex)
                {
                    lblErrorMessage.Text = ex.Message;
                }
            }
      
            private void ExportToExcel()
            {
                try
                {
                    RadGrid NewRG = new RadGrid();
      
                    NewRG.ID = "rgExportGrid";
                    NewRG.DataSource = GenerateTestData();
      
                    NewRG.ClientSettings.DataBinding.EnableCaching = true;
                    NewRG.ExportSettings.FileName = txtFileName.Text;
                    NewRG.ExportSettings.OpenInNewWindow = true;
                    NewRG.ExportSettings.Excel.Format = GridExcelExportFormat.Html;
                    NewRG.ExportSettings.IgnorePaging = true;
                    NewRG.ExportSettings.ExportOnlyData = true;
                    NewRG.NeedDataSource += new GridNeedDataSourceEventHandler(ExportGrid_NeedDataSource);
                    Page.Controls.Add(NewRG);
                    NewRG.DataBind();
      
                    NewRG.MasterTableView.ExportToExcel();
                    AddCloseScript();
                }
                catch (Exception ex)
                {
                    lblErrorMessage.Text = ex.Message;
                }
            }
      
            protected void ExportGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
            {
                RadGrid grid = (RadGrid)sender;
                grid.DataSource = GenerateTestData();
            }
      
            private DataTable GenerateTestData()
            {
                DataTable testData = new DataTable();
      
                testData.Columns.Add(new DataColumn("Column1"));
                testData.Columns.Add(new DataColumn("Column2"));
                testData.Columns.Add(new DataColumn("Column3"));
                testData.Columns.Add(new DataColumn("Column4"));
                testData.Columns.Add(new DataColumn("Column5"));
      
                for (int i = 0; i <= 10; i++)
                    testData.Rows.Add(new object[] { "1", "2", "3", "4", "5" });
      
                return testData;
            }
      
            private void AddCloseScript()
            {
                //ClientScript.RegisterStartupScript(typeof(string), "CloseScript", "CloseDialog();", true);
                ClientScript.RegisterStartupScript(typeof(string), "CloseScript", "CloseDialog();", false);
                  
            }
        }
    }
  10. Svetlina Anati
    Admin
    Svetlina Anati avatar
    2795 posts

    Posted 05 Apr 2011 Link to this post

    Hello Justin,

     Thank you for the provided code, we were able to reproduce the problem. We researched it and found that the problem is that the response stream is changed to the file and to achieve what you need with this code you should refresh the page.

    However, what we suggest is to first close the radWindow (you should do so anyways) and then invoke the export as shown below:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="exportgrid.aspx.cs" Inherits="ContentWindow" %>
      
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <head id="Head1" runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        </telerik:RadScriptManager>
        <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 CloseDialog() {
                GetRadWindow().close();
                __doPostBack("<%=btnExport.UniqueID %>", "");
            
        </script>
        <div style="height: 21px; margin: 5px; background-color: #747e96; color: white; width: 96%;
            font-size: 15px; font-weight: bold; padding: 5px;">
            Export Grid Data
        </div>
        <asp:Label runat="server" ID="lblErrorMessage" ForeColor="Red"></asp:Label>
        <table>
            <tr>
                <td style="vertical-align: top;">
                    File Type:
                </td>
                <td>
                    <asp:RadioButtonList ID="rblFileType" runat="server">
                        <asp:ListItem Text="CSV (Comma Delimited)" Value="CSV" Selected="True" />
                        <asp:ListItem Text="TXT (Tab Delimited)" Value="TXT" />
                        <asp:ListItem Text="XLS (Excel File)" Value="XLS" />
                    </asp:RadioButtonList>
                </td>
            </tr>
            <tr>
                <td>
                    File Name:
                </td>
                <td>
                    <asp:TextBox runat="server" ID="txtFileName" Width="250px"></asp:TextBox>
                    <asp:RequiredFieldValidator runat="server" ID="rfvFileName" ControlToValidate="txtFileName"
                        Text="*" ForeColor="Red" />
                </td>
            </tr>
            <tr>
                <td colspan="2" style="text-align: right;">
                    <br />
                    <asp:Button runat="server" ID="btnCancel" Text="Cancel" OnClientClick="return CloseDialog();"
                        CausesValidation="false" />
                    <asp:Button runat="server" ID="btnExport" Text="Export" OnClientClick="CloseDialog();return false;"
                        OnClick="btnExport_Click" />
                </td>
            </tr>
        </table>
        </form>
    </body>
    </html>

    I hope that my reply is helpful and for your convenience I attached a sample demo - let me know how it goes.


    Greetings,
    Svetlina
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  11. Chad
    Chad avatar
    1 posts
    Member since:
    Jul 2011

    Posted 08 Jul 2011 Link to this post

    Hello Svetlina,

    I have the same exact situation and by using your workaround closing the radwindow before doing a postback does nothing but to close the radwindow. It doesnt invoke the export which is defeating the whole purpose. Please let me know if you have any updates or any other workarounds for this situation.

    Thanks,
    Chad
  12. Justin
    Justin avatar
    11 posts
    Member since:
    Aug 2006

    Posted 11 Jul 2011 Link to this post

    Chad,

    I never found a viable solution to this problem.  I ended up having to leav the window open and requiring the user to close it.

    Sorry, I hope you find somwthing that works for ya.
  13. Marin Bratanov
    Admin
    Marin Bratanov avatar
    3596 posts

    Posted 12 Jul 2011 Link to this post

    Hi guys,

    I tried the code provided by Svetlina and I can confirm that it works fine and the RadWindow closes itself. You can find a video from my experiment in the following link: http://screencast.com/t/iMvT5JArfEH. There is only one small omission there - the cancel button calls the same function as the export button, yet this is not related to the other functionality. Please make sure that in your projects the buttons are not wrapped in update panels and the postbacks are executed. If, for some reason the event validation breaks the __doPostBack() function you may try to trigger it by using the client-side name of the button (although this actually does the same as the server code block):
    function CloseDialog(button) {
         GetRadWindow().close();
         __doPostBack(button.name, "");
      
    <asp:Button runat="server" ID="btnExport" Text="Export" OnClientClick="CloseDialog(this);return false;" OnClick="btnExport_Click" />



    Greetings,
    Marin
    the Telerik team

    Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!

  14. vikas
    vikas avatar
    11 posts
    Member since:
    Dec 2008

    Posted 24 May 2012 Link to this post

    Dear Telerik,

    How about if you use Radbutton instead of button, why won't it work?

    function CloseDialog(button) {
         GetRadWindow().close();
         __doPostBack(button.name, "");
    }
       
    <asp:Button runat="server" ID="btnExport" Text="Export" OnClientClick="CloseDialog(this);return false;" OnClick="btnExport_Click" />

    Thank you in advanced
  15. Princy
    Princy avatar
    17421 posts
    Member since:
    Mar 2007

    Posted 24 May 2012 Link to this post

    Hi Vikas,

    Try the following code snippet.

    ASPX:
    <telerik:RadButton runat="server" ID="btnExport" Text="Export" OnClientClicked="CloseDialog" OnClick="btnExport_Click" />

    JS:
    function CloseDialog(sender,args)
           {
                GetRadWindow().close();
                __doPostBack(sender.name, "");
           }

    Thanks,
    Princy.
  16. vikas
    vikas avatar
    11 posts
    Member since:
    Dec 2008

    Posted 24 May 2012 Link to this post

    Dear Princy,

    Thank's for the reply how to do it in the back code instead, still using Radbutton .

    Regards
  17. Princy
    Princy avatar
    17421 posts
    Member since:
    Mar 2007

    Posted 25 May 2012 Link to this post

    Hi Vikas,

    I suppose you want to close the Window from server side. You need to inject the javascript function to the asp label as it's text and write the client side method to close the RadWindow as shown below.

    ASPX:
    <telerik:RadButton runat="server" ID="btnExport" Text="Export"  OnClick="btnExport_Click" />
    <asp:Label ID="Label1" runat="server"></asp:Label>

    C#:
    protected void btnExport_Click(object sender, EventArgs e)
       {
            Label1.Text = "<script type='text/javascript'>CloseDialog()</" + "script>";
       }

    JS:
    <script type="text/javascript">
        function CloseDialog()
           {
                GetRadWindow().close();
                __doPostBack("<%=btnExport.UniqueID %>", "");
           }
    </script>

    Hope this helps.

    Thanks,
    Princy.
  18. Christian
    Christian avatar
    3 posts
    Member since:
    Nov 2011

    Posted 24 Apr 2013 Link to this post

    I have the same problem . But the difference is that button to download is in Parent Page. then open radwindow and download File.
    How I make force the Post-back to close radwindow ?

    Thanks

    Regards
  19. Marin Bratanov
    Admin
    Marin Bratanov avatar
    3596 posts

    Posted 26 Apr 2013 Link to this post

    Hello Christian,

    If a postback returns as a file it changes the entire response and you cannot register a script that will close the RadWindow.

    If you are showing a RadWindow just to download the file and it stays opened without content after that I can suggest you look into the content-disposition HTTP header for your file and send it to the user from the main page without a RadWindow at all. When set to attachment the page will not be disposed because only a file will be returned that will not be inline in the page.


    Greetings,
    Marin Bratanov
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
  20. Amruta
    Amruta avatar
    18 posts
    Member since:
    Apr 2009

    Posted 20 May 2015 in reply to Marin Bratanov Link to this post

    Hi Marin,

    Can you please provide some more details for this?

    I need to download a document (display save as option) when user clicks on "Ok" button in a rad window and close the window.

    Thanks,

    Amruta.

  21. Ahmed
    Ahmed avatar
    3 posts
    Member since:
    Jul 2015

    Posted 24 Sep in reply to Wai Loon Ho Link to this post

    Simple way to force closing rad window, just put it inside update panel like that :

    <asp:UpdatePanel ID="uppChangeHallPriceWindow" runat="server" UpdateMode="Conditional" RenderMode="Block">
      <ContentTemplate>
         <telerik:RadWindow ID="RadWindow1" runat="server">
           <ContentTemplate>
                                           
           </ContentTemplate>
        </telerik:RadWindow>
      </ContentTemplate>
    </asp:UpdatePanel>

    Important: you have to apply this properties to the update panel :

     UpdateMode="Conditional" RenderMode="Block"

     

    then inside the button you want to execute the close command perform :

    updatepanel1.update()

    this command will close radwindow and no refresh to your Webpage and no need to javascript, I tried it.

  22. Marin Bratanov
    Admin
    Marin Bratanov avatar
    3596 posts

    Posted 26 Sep Link to this post

    Hi Ahmed,

    I would generally advise against such an approach. Please review the following articles on the matter:

    Regards,

    Marin Bratanov
    Telerik by Progress
    Do you need help with upgrading your ASP.NET AJAX, WPF or WinForms projects? Check the Telerik API Analyzer and share your thoughts.
Back to Top
UI for ASP.NET Ajax is Ready for VS 2017