Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di evil80
    Registrato dal
    May 2001
    Messaggi
    321

    problema con carrello della spesa

    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

    codice:
    if(carrello==null)
    {
       carrello=new Carrello();
    }
    ma ho visto che ad ogni aggiunta di un prodotto va sempre ad istanziarlo,perdendo dunque tutti i vecchi dati.
    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.
    Secondo alcuni autorevoli testi di tecnica di aeronautica, il calabrone non può volare, a causa della forma e del peso del proprio corpo in rapporto alla superficie alare.
    Ma il calabrone non lo sa e perciò continua a volare.
    Igor Sikorsky

  2. #2
    Scusa.. una volta che crei l'oggetto Carrello lo salvi anche in una variabile di sessione?

    Perché altrimenti non potresti utilizzarlo nelle pagine successive (sarebbe sempre null)..

  3. #3
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877

    Re: problema con carrello della spesa

    Originariamente inviato da evil80
    [cut]
    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.
    Il Garbage Collector non c'entra proprio niente in questo caso!
    Per memorizzarti i valori puoi metterli in sessione e poi leggerli al reload della pagina, oppure se la pagina fa sempre postback su se stessa puoi aggiungere il carrello al viewstate della pagina e avere i dati codificati lì.

    HTH
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  4. #4
    Utente di HTML.it L'avatar di Ottavio
    Registrato dal
    Jul 2000
    Messaggi
    286

    a quanto dicono

    meglio nella cache che nella session.....

    voi che ne pensate !??!?!?
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Era un mondo adulto, si sbagliava da professionisti....
    <P.Conte>
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

  5. #5
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877

    Re: a quanto dicono

    Originariamente inviato da Ottavio
    meglio nella cache che nella session.....

    voi che ne pensate !??!?!?
    Che dipende cosa ci devi mettere... La cache è di applicazione, la session è di sessione...
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  6. #6
    D'accordo con biste, la cache va utilizzata solo per memorizzare informazioni a livello di applicazione non di sessione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.