user3725613
user3725613

Reputation: 31

how to close radwindow in asp.net?

I am a using ASP.NET controller to display user detail. When RadWindow is open & I tried to close with Close button. But the problem is that after page load and post back it opens again and again. I've multi-option on page: new, save, print etc. search.

<telerik:RadWindow ID="rwReport" runat="server" Behaviors="Close" KeepInScreenBounds="true"
                        AutoSize="true" VisibleOnPageLoad="false" Modal="true" Title="Report ACMI Advance Payment"
                        DestroyOnClose="true">
                        <ContentTemplate>
                            <ucRPV:ReportViewer id="ucReportViewer" runat="server" />
                        </ContentTemplate>
                    </telerik:RadWindow>

cs file code
 private void Print() 
        {
            try
            {
               // this.sADPs.DisplayReport();
                Hashtable reportParameters = new Hashtable();

                reportParameters.Add("DataSourceName", "dsACMIAdvancePayment");
                reportParameters.Add("reportName", "rptACMIAdvancePayment.rdlc");
                reportParameters.Add("Id", this.hfId.Value.ToString().ConvertTo<long>());

                this.ucReportViewer.clearReport();
                this.ucReportViewer.showReport(reportParameters);
                this.rwReport.VisibleOnPageLoad = true;

                //showReport(reportParameters);

            }
            catch(Exception e) 
            {
                throw e;
            }                      
        }

ASPX code:

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="AjaxControlToolkit" %>
<%@ Register Src="../Reports/rpvReportViewerPopup.ascx" TagName="ReportViewer" TagPrefix="ucRPV" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<%@ Register Src="../Common/UserControls/ToolBarActions.ascx" TagName="ToolBarActions" TagPrefix="ucTBA" %>
        </td>

Upvotes: 2

Views: 3959

Answers (4)

Protector one
Protector one

Reputation: 7261

Add a Button with an OnClick handler with the following code:

    protected void CloseRadWindow(object sender, EventArgs e)
    {
        rwReport.VisibleOnPageLoad = false;
    }

Upvotes: 0

rdmptn
rdmptn

Reputation: 5603

Do not use the VisibleOnPageLoad property to show a RadWindow, register a script that will call its show() method. Thus, subsequent postbacks will not cause it to show up by itself: http://www.telerik.com/help/aspnet-ajax/window-troubleshooting-opening-from-server.html.

Of course, preventing the form from re-submitting as Felice suggested is another thing that may also be needed.

To translate this into code:

instead of:

this.rwReport.VisibleOnPageLoad = true;

use:

string script = "function f(){$find(\"" + rwReport.ClientID + "\").show(); Sys.Application.remove_load(f);}Sys.Application.add_load(f);";
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "key", script, true);

Upvotes: 1

FeliceM
FeliceM

Reputation: 4199

I have experienced the same problem when you reload the page because the browser resend the information and the radwindow opens again. To avoid such behavior I have adopted the following solution:

Add a hidden filed to hold the client code:

<asp:HiddenField runat="server" ID="_repostcheckcode" />

Add the following code in the code page:

protected void Page_Load(object sender, EventArgs e)
{
    CancelUnexpectedRePost();
}

private void CancelUnexpectedRePost()
{
    string clientCode = _repostcheckcode.Value;

    //Get Server Code from session (Or Empty if null)
    string serverCode = Session["_repostcheckcode"] as string  ?? "";

    if (!IsPostBack || clientCode.Equals(serverCode))
    {
        //Codes are equals - The action was initiated by the user
        //Save new code (Can use simple counter instead Guid)
        string code = Guid.NewGuid().ToString();  
        _repostcheckcode.Value = code;
        Session["_repostcheckcode"] = code;
    }
    else
    {
        //Unexpected action - caused by F5 (Refresh) button
        Response.Redirect(Request.Url.AbsoluteUri);
    }
}

The original article can be found here.

Upvotes: 0

Vikrant
Vikrant

Reputation: 5036

You can try below code : this might help-

<telerik:RadScriptBlock runat="server" ID="scriptBlock">

    <script type="text/javascript">
        //<![CDATA[
        function GetRadWindow() {
            var oWindow = null;
            if (window.radWindow) oWindow = window.radWindow;
            else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;
            return oWindow;
        }
        function CloseWin() {
            //Get the RadWindow  
            var oWindow = GetRadWindow();
            //Call its Close() method
            if (oWindow) {
                oWindow.Close();
            }
            return false;
        }
 </script>
 </telerik:RadScriptBlock>

And on Page: yourpage.aspx;... call the function onClientClick of button:

<asp:Button ID="btnClose" Text="Close" runat="server" CssClass="button" Enabled="true" OnClientClick="CloseWin();" />

Upvotes: 0

Related Questions