97 messaggi dal 04 ottobre 2004
La soluzione proposta mi ha dato lo spunto per costruire un qualcosa che si possa utilizzare anche per chi usa controlli annidati. In pratica ho fatto una classe che eredita da SystemWeb.UI.Page in cui ho inserito nell'evento PreRender la scrittura sul cookie dell'oggetto che ha generato il postBack. A questo nell'evento di gestione del postBack del controllo ho inserito una verifica che funziona come l'isPostBack, solo che questa volta l'ho chiamata isRefresh, qundi mi chiedo: "Se non sei in refresh allora fai queste operazioni".

MasterPage
public class MasterPage : System.Web.UI.Page{

protected override void OnPreRender(EventArgs e){
// Salvo il valore di __EVENTATRGET,colui che ha generato il PostBack
Response.Cookies["myEvent"].Value = Request["__EVENTTARGET"];
}

public bool isRefresh
{
get
{
// Se il cookie è uguale all'attuale valore di __EVENTARGET la pagina è in refresh (l'utente ha premuto F5
if (Request.Cookies["myEvent"] != null && Request.Cookies["myEvent"].Value==Request["__EVENTTARGET"])
{
return true;
}
else
{
return false;
}        
}
}
}


A questo punto nel gestore dell'evento del controllo prima di effettuare le operazioni metteremo:

if(!((MasterPage)this.Page).isRefresh)
{
// qui inserisco il codice di gestione dell'evento
}



Naturalmente la nostra pagina.aspx dovrà estendere da MasterPage e non più da Page
Modificato da milaus1979 il 28 giugno 2005 10.47 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.