Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Carrello.... che perde colpi
mercoledì 18 aprile 2007 - 14.42
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
borgo79
Profilo
| Newbie
14
messaggi | Data Invio:
mer 18 apr 2007 - 14:42
Un saluto a tutti,
volevo sottoporvi un quesito riguardo una cosa piuttosto singolare che mi capita con il mio piccolo carrello. Cioè, io la considero singolare... poi magari il comportamento è quello giusto ed io non comprendo.
Situazione:
Ho un datalist con tutti i prodotti ed un pulsante "add to cart" che mi consente di aggiungere un prodotto al carrello. Inserisco questi dati nella mia tabella "dettagli_ordine". Ovviamente, dopo aver cliccato il pulsante Add To Cart (imagebutton) si scatena l'evento postback. Approfitto di questo evento per interrogare il database domandandogli (è solo una prova) quanti record ci sono nella tabella. Nonostante il record sia stato regolarmente aggiunto alla tabella, mi viene segnalato che i record sono, ad esempio, 6. Se aggiungo un nuovo record, mi dice che sono 7, quando in realtà sono 8... insomma, la progressione l'avete capita. E' come se stesse sempre un passo indietro.
Domanda:
Posso ovviare in qualche modo? Vorrei che l'utente sapesse quanto spende ogni volta che aggiunge un prodotto al suo carrello.
Un saluto,
Francesco
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 18 apr 2007 - 19:09
>Un saluto a tutti,
Ciao!
>volevo sottoporvi un quesito riguardo una cosa piuttosto singolare
>che mi capita con il mio piccolo carrello. Cioè, io la considero
>singolare... poi magari il comportamento è quello giusto ed io
>non comprendo.
>
>Situazione:
>
>Ho un datalist con tutti i prodotti ed un pulsante "add to cart"
>che mi consente di aggiungere un prodotto al carrello. Inserisco
>questi dati nella mia tabella "dettagli_ordine". Ovviamente,
>dopo aver cliccato il pulsante Add To Cart (imagebutton) si scatena
>l'evento postback. Approfitto di questo evento per interrogare
>il database domandandogli (è solo una prova) quanti record ci
>sono nella tabella. Nonostante il record sia stato regolarmente
>aggiunto alla tabella, mi viene segnalato che i record sono,
>ad esempio, 6. Se aggiungo un nuovo record, mi dice che sono
>7, quando in realtà sono 8... insomma, la progressione l'avete
>capita. E' come se stesse sempre un passo indietro.
>
>Domanda:
>
>Posso ovviare in qualche modo? Vorrei che l'utente sapesse quanto
>spende ogni volta che aggiunge un prodotto al suo carrello.
che dbms utilizzi?
Alx81 =)
http://blogs.dotnethell.it/suxstellino
borgo79
Profilo
| Newbie
14
messaggi | Data Invio:
mer 18 apr 2007 - 19:11
MySql
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 18 apr 2007 - 19:35
>MySql
ok, ora posta il codice che vediamo cosa succede
Alx81 =)
http://blogs.dotnethell.it/suxstellino
borgo79
Profilo
| Newbie
14
messaggi | Data Invio:
mer 18 apr 2007 - 19:43
Allora. Ripeto velocemente dove siamo: in questa pagina ho un elenco di prodotti che è possibile aggiungere direttamente al carrello, senza andare, come usa di solito, in una pagina dedicata all'articolo che interessa.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
'....
'....
sql = "SELECT * FROM dettagli_ordine"
myConnection = New MySqlConnection(bla bla)
ds = New DataSet()
dt = New DataTable()
Try
da = New MySqlDataAdapter(strSql, myConnection)
da.Fill(ds, "nome-tabella")
dt = ds.Tables("nome-tabella")
Catch ex As Exception
Finally
myConnection.Close()
End Try
Response.Write(dt.Rows.Count)
End Sub
Come detto attraverso il datalist inserisco i prodotti nel carrello, la procedura di inserimento avviene con successo
Protected Sub DL_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs)
sql = "INSERT INTO dettagli_ordine (IDO, IDA, qta) VALUES ('" & _
IDO & "', " & ID & ", " & qta & ")"
End Sub
Nel momento in cui clicco sul pulsante che mi consente di inserire il prodotto, la pagina viene ricaricata, il dato correttamente inserito nel database, ma il famoso Response nel Page Load non da segni di vita
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 18 apr 2007 - 20:53
>Allora. Ripeto velocemente dove siamo: in questa pagina ho un
>elenco di prodotti che è possibile aggiungere direttamente al
>carrello, senza andare, come usa di solito, in una pagina dedicata
>all'articolo che interessa.
>
>Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
> '....
> '....
> sql = "SELECT * FROM dettagli_ordine"
> myConnection = New MySqlConnection(bla bla)
> ds = New DataSet()
> dt = New DataTable()
>
> Try
> da = New MySqlDataAdapter(strSql, myConnection)
> da.Fill(ds, "nome-tabella")
> dt = ds.Tables("nome-tabella")
> Catch ex As Exception
> Finally
> myConnection.Close()
> End Try
>
> Response.Write(dt.Rows.Count)
>End Sub
>
>Come detto attraverso il datalist inserisco i prodotti nel carrello,
>la procedura di inserimento avviene con successo
>
>Protected Sub DL_ItemCommand(ByVal source As Object, ByVal e
>As System.Web.UI.WebControls.DataListCommandEventArgs)
>sql = "INSERT INTO dettagli_ordine (IDO, IDA, qta) VALUES ('"
>& _
> IDO & "', " & ID & ", " & qta & ")"
>End Sub
>
>Nel momento in cui clicco sul pulsante che mi consente di inserire
>il prodotto, la pagina viene ricaricata, il dato correttamente
>inserito nel database, ma il famoso Response nel Page Load non
>da segni di vita
Come hai detto prima il problema sta nel fatto che ottieni il valore del reale conteggio -1...
Il motivo è che stampi il conteggio delle righe, prima di fare la insert.. infatti prima di passare all'evento click del bottone, viene gestito l'evento Load.. Ad ogni chiamata, Load viene scatenato sempre prima di ItemCommand..
quindi il conteggio è corretto, va solo messo da un'altra parte, ad esempioo nell'item command stesso. puoi controllare lì il conteggio delle righe del datasource..
ciao!
Alx81 =)
http://blogs.dotnethell.it/suxstellino
borgo79
Profilo
| Newbie
14
messaggi | Data Invio:
gio 19 apr 2007 - 08:31
vado a.. intuito.
La pagina viene eseguita: controllo immediatamente quanti recordo ci sono nel database. E al primo controllo saranno 0, giusto? Nell'item_command aggiungo un record al database, la pagina si "ricarica". Rincontrollo quanti record ci sono nel db (nel Page_Load) e continuano ad essere 0, anche se in realtà nel DB il record è presente.
martinez
Profilo
| Senior Member
274
messaggi | Data Invio:
gio 19 apr 2007 - 16:15
Scusa se dico la mia ...
Anzitutto Ciao
A mio parere dovresti effettuare il databind del tuo controllo nel post-back della pagina al momento che questa viene ricaricata, infatti, almeno secondo me se non effettui alcun databind il controllo rimane "congelato" al post oppure al load precedente ...
prova a fare databind nell'item command
Saluti
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 20 apr 2007 - 18:45
@borgo79
>La pagina viene eseguita: controllo immediatamente quanti recordo
>ci sono nel database. E al primo controllo saranno 0, giusto?
giusto
>Nell'item_command aggiungo un record al database, la pagina si
>"ricarica".
e passa prima per la load.. passa proprio prima di fare l'itemcommand e quindi l'inserimento!!
>Rincontrollo quanti record ci sono nel db (nel Page_Load)
>e continuano ad essere 0, anche se in realtà nel DB il record
>è presente.
per il motivo di cui sopra..
@martinez
non è questione di databind.. ma di ordine di eventi..
quando la pagina viene ricaricata, passa prima dalla load e quindi fa vedere il numero di record prima della insert.
Poi passa per l'itemcommand e solo qui il record viene inserito.. quindi la prossima pressione del tasto porterà ad un conteggio nuovamente errato (ovvero -1 rispetto al contenuto reale della tabella)..
tutto qui..
Poi quello che dici è comunque corretto..
, come dicevo anche nei post precedenti.. anche solo per avere il corretto conteggio, sarà necessario spostarsi sull'itemcommand..
Alx81 =)
http://blogs.dotnethell.it/suxstellino
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !