2015-03-10 3 views
0

Я использую контроллер ASP.NET для отображения деталей пользователя. Когда RadWindow открыт & Я пытался закрыть с Закрыть button. Но проблема в том, что после загрузки страницы и отправки назад она открывается снова и снова. У меня есть опция на странице: новый, сохранение, печать и т. Д. Поиск.Как закрыть radwindow в asp.net?

<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 код:

<%@ 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> 
+0

в любом случае, ниже решение работало на ya? – Vikrant

ответ

0

Вы можете попробовать ниже код: это может Помощь-

<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> 

а на странице: yourpage.aspx; ... вызвать функцию OnClientClick из кнопка:

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

здесь my aspx page user3725613

+0

Уважаемый @ user3725613, не добавляйте код в комментарий, вместо этого отредактируйте свой вопрос. – Vikrant

+0

у вас пробовал этот ответ, он работает? дайте мне знать, приняв это! – Vikrant

0

Я испытал та же проблема, когда вы перезагружаете страницу, потому что браузер повторно отправляет информацию, а radwindow открывается снова. Чтобы избежать такого поведения я принял следующее решение:

Добавить скрытом подал держать код клиента:

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

Добавьте следующий код в кодовой странице:

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); 
    } 
} 

Оригинальный статью можно найти here.

0

Не используйте свойство VisibleOnPageLoad, чтобы показать RadWindow, зарегистрируйте скрипт, который вызывается его методом show(). Таким образом, последующие обратные вызовы не вызовут его само по себе: http://www.telerik.com/help/aspnet-ajax/window-troubleshooting-opening-from-server.html.

Конечно, предотвращение повторной подачи формы, поскольку предложенная Феличеса - это еще одна вещь, которая также может понадобиться.

Чтобы перевести это в коде:

вместо:

this.rwReport.VisibleOnPageLoad = true; 

использование:

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); 
Смежные вопросы