16 messaggi dal 24 agosto 2005
Salve a tutti, ho la necessità di salvare lo stato di una pagina con dei filtri di ricerca in modo tale dopo aver effettuato la ricerca su questa pagina compare la gridivew sotto con il risultato della ricerca, l'utente clicca su un item della gridview e va nella maschera di gestione della pratica (un'altra pagina da quella di ricerca), poi una volta che sta sulla pagina di dettagli odella pratica clicca sul pulsante INDIETRO del browser e dovrei mantenere l'ultimo stato di ricerca delle pratiche.... quindi i valori nei campi di ricerca e la paginazione della gridview....

Ho provato, una volta premuto il pulsante ricerca della pagina, a salvare in sessione i valori dei 5-6 campi di ricerca, ma ho un problema con le dropdownlist, in quanto sull'evento Page_Load che scatta quando premo indietro sul browser il valore ddlCampoRicerca.SelectedValue non viene sovrascritto con il valore salvato precedentemente in sessione!!!! Invece per i campi testo riesco tranquillamente a ripristinare il vecchio valore salvato in sessione.

Un'altra soluzione un pò più difficle per me è stata quella di provare a salvare in sessione tutto il viewstate e ripristinarlo facendo l'override dei 2 eventi, come mostrato sotto... ma non funziona, cioè nella stessa pagina funziona appena cambio pagina e ritorno con indietro sulla pagina della ricerca i filtri vengono ripriostinati allo stato iniziale!

protected override void SavePageStateToPersistenceMedium(object viewState)
{
// crea la chiave per memorizzare l'oggetto viewState in una session variable, concatenando
// il sessionID e lo script name della web form corrente
string sessionKey = Session.SessionID + Request.ServerVariables["SCRIPT_NAME"];
Session[sessionKey] = viewState;
}

protected override object LoadPageStateFromPersistenceMedium()
{
// ricrea la chiave per recuperare l'oggetto viewState dalla variabile session
// e quindi ritornarlo al chiamante
string sessionKey = Session.SessionID + Request.ServerVariables["SCRIPT_NAME"];
return Session[sessionKey];
}
Modificato da gemon il 24 aprile 2009 13.45 -
Modificato da gemon il 24 aprile 2009 13.46 -
posti un pò del codice che usi per ripristinare i valori?.

eviteri proprio del tutto la strada di mantenre il ViewState in sessione...

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
16 messaggi dal 24 agosto 2005
ciao, innanzitutto grazie per la celere riposta...

poi: il viewstate in sessione lo eviterei anche io...

poi questo il codice che eseguo per salvare in sessione il valore dell'item selezionato nella dropdownlost

Session["PRATICHE_FILTRI_SETTORE"] = ddlFiltroSettore.SelectedIndex;


e questo quello che uso per ripristinarlo sul page_load

ddlFiltroSettore.SelectedIndex = int.Parse(Session["PRATICHE_FILTRI_SETTORE"].ToString());

molto semplice, quando però eseguo il ripristino del valore sul page-load, il valore del SelectedIndex non viene aggiornato!!! In debug vedo proprio che esegue la riga non viene aggiornato il valore di ddlFiltroSettore.SelectedIndex ma non va nenache in errore.... non vorrei dipendesse dal fatto che questa dropdownlist sta in databound "stretto" con un sqlsdatasource....

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.