ciao,
sto scrivendo un carrello della spesa.
Nella pagina dei prodotti ho un datagrid che contiene pulsanti che permettono l'aggiunta di prodotti ad un carrello.
Allora ho scritto la classe Carrello,nella quale vado via via ad aggiungere righe ad un datatable.
Quando voglio aggiornare il carrello mi faccio restituire dalla classe il datatable che associo al datasource di un datagrid.
La logica funziona,il problema è questo:
-ho dichiarato una variabile privata di tipo Carrello nella pagina di selezione dei prodotti e nel suo Load vado ad istanziarla (all'interno della clausola IsPostBack,per evitare che venga istanziata ad ogni ritorno dal server)
-quando aggiugo un prodotto mi dà errore perchè mi dice che la varibile carrello ha un riferimento a null,ovvero che non è stata istanziata
-ho tolto la new dell'istanza dal Load e lo inserita nel metodo di aggiunta di un prodotto in questo modo
ma ho visto che ad ogni aggiunta di un prodotto va sempre ad istanziarlo,perdendo dunque tutti i vecchi dati.codice:if(carrello==null) { carrello=new Carrello(); }
Ora penso che ciò sia dovuto al Garbage Collector che mi spazza via l'istanza del carrello corrente e mi costringe dunque a crearne un'altra.
Ovviamente non ha alcun senso dichiarare il carrello static altrimenti andrebbe a finire che i vari clienti condividono lo stesso carrello !!
Mi sapreste indicare una soluzione oppure segnalarmi dove sto sbagliando.
Insomma l'unica cosa che voglio è UNA SINGOLA ISTANZA per OGNI pagina aperta di elenco dei prodotti.
Come faccio ???
Grazie degli aiuti.