Blog Stats
  • Posts - 171
  • Articles - 1
  • Comments - 197
  • Trackbacks - 5

 

La chiusura delle web form...

I clienti che passano da un ambiente client ad uno web spesso desiderano le stesso comodità tipiche del client anche sul web, non conoscendo i limiti "by design" delle interfaccie web.

Per esempio l'implementazione del controllo di campi modificati e relativo messaggio sulla chiusura di form di data-entry.

Per ottenere questo non esiste un unico metodo, comunque asp.net non ha niente di nativo pronto all'uso.

Una soluzione,la prima che può venire in mente, è quella di gestire la chiusura della window generando un postback, controllare la modifica dei dati sul server e generare il javascript necessario.

La soluzione ottimale rimane quella di gestire il controllo completamente lato client.

Vediamo una possibile implementazione, che è quella che ho pensato per il mio progetto:

1) La classe dell'aspx o ascx base crea un campo nascosto che servirà per mantenere il valore, anche tra i postback, di modifica di almeno un campo della form

// Carico il campo che indica se ho modificato i dati di input della maschera
if (!this.IsPostBack)
{
 
this.Page.RegisterHiddenField( _HIDDEN_CHANGEFIELD, "0");
}
else
{
  this.Page.RegisterHiddenField( _HIDDEN_CHANGEFIELD, this.Page.Request.Form[ _HIDDEN_CHANGEFIELD] );
}

2) Nel load dell'aspx o ascx(dipende dove sono i controlli da verificare), per ogni controllo di input devo creare l'evento client 'onchange' (textbox e dropdown), piuttosto che 'onclick' (checkbox) in cui valorizzo un campo nascosto.

if (control is CheckBox)
{
  control.Attributes.Add("onclick", "document.getElementById('" + _CLIENT_CHECK_CHANGEDFIELD + "').value = 1;");
}
else
{
  control.Attributes.Add("onchange", "document.getElementById('" + _CLIENT_CHECK_CHANGEDFIELD + "').value = 1;");
}

3) Sull'evento client di chiusura(per esempio tramite un bottone specifico, io sconsiglio l'utilizzo della 'x' ed educo gli utilizzatori dell'applicazione a chiudere dal bottone 'Chiudi' creato apposta) non mi resta altro che controllare il valore del campo nascosto per generare il messaggio di notifica.

 

Con questa soluzione il lavoro è minimo in quanto, una volta incapsulato il punto 2 in un metodo, dal codice delle form web devo solamente richiamarlo N volte per i mie N controlli di input.

Se qualcuno ha soluzioni diverse sarei ben lieto di conoscerle ...  :)

 

Comments have been closed on this topic.
 

 

Copyright © Luca Mauri