Un custom control per chiudere popup

di Daniele Bochicchio, in ASP.NET, C#, Custom Server Controls,

Spesso si ha la necessità, in una pagina aperta come popup, di effettuare il refresh della pagina che ha richiesto l'apertura per aggiornarne i contenuti.

Un approccio al problema consiste nell'utilizzare, nel PostBack del popup, un semplice codice Javascript come questo:

opener.location.reload(); // refresh della form padre
window.close(); // chiusura della popup

Per comodità si può realizzare un custom web control ed inserirlo così direttamente nella popup:

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Text;

namespace ASPItalia.com.Web.UI.Controls
{
  public class PopupCloser: Control
  {
    private string alternateText;
    protected override void Render(HtmlTextWriter output)
    {
      StringBuilder html = new StringBuilder();
      html.Append("<script type=\"text//javascript\"><!--\r\n");
      html.Append("opener.location.reload();");
      html.Append("window.close();");
      html.Append("\r\n////--></script>");

      // output a video
      output.Write(html.ToString());
    }
  }
}

Un esempio di utilizzo può essere:

[code lang="aspx"]<%@Register TagPrefix="aspitalia" Namespace="ASPItalia.com.Web.UI.Controls" Assembly="aspitalia.controls" %>
<aspitalia:PopupClose id="popupCloser" runat="server" visible="false" />

Con la visualizzazione dello stesso quando è necessario chiudere la popup:

if (Page.IsPostBack)
  popupCloser.Visible = true;

In questo modo il codice Javascript sarà visibile sulla pagina e si otterrà l'effetto desiderato.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi