Textbox in templatefield restituisce il valore precedente

martedì 29 marzo 2011 - 11.13

oil2percento Profilo | Newbie

Buongiorno, sto cercando di realizzare un carrello elettronico, per cui ho una gridview collegata a un dbaccess con il classico pulsante del carrello. Nell' itemtemplate di un campo templatefield della gridview ho inserito una textbox, con valore predefinito = 1 che definisce la quantità di acquisto dei singoli prodotti. L'utente la possibilità quindi di cliccare nella textbox per inserire una quantità diversa da 1. Fin qui tutto bene, il problema nasce nel momento in cui faccio click sul pulsante carrello, in quanto la casella textbox mi restituisce sempre il valore predefinito, cioè 1.
Con queste codice intercetto la textbox e assegno il suo valore ad una variabile :

Dim riga As GridViewRow = GridView1.Rows(Convert.ToInt32(e.CommandArgument))
Dim txtquantita As TextBox = DirectCast(riga.FindControl("TextBox1"), TextBox)
miavariabile = txtquantita

Ho provato ad inserire il codice nell'evento rowcommand e selectedindexchanged ma la situazione non cambia.
Qualcuno può illuminarmi?
Grazie per l'attenzione.

skraus Profilo | Junior Member

Per caso la TextBox è read only ? Non ci manca la proprietà Text dopo la variabile di tipo TextBox ?
Sk

oil2percento Profilo | Newbie

Ciao, la proprietà readonly è impostata su false, per quanto riguarda il .text ho dimenticato di scriverlo qui nel post, ma effettivamente nel codice c'è. Io credo che il problema sia dovuto al fatto che nel momento in cui si fa click sul pulsante per salvare i dati la pagina viene ricaricata e quindi la textbox riprende il suo valore predefinito cioè 1. E' la prima volta che mi avvicino allo sviluppo web, e quindi non comprendo bene il funzionamento di molte cose, però se ho capito bene alla pressione del tasto non viene eseguito il codice associato al click, ma viene prima ricaricata la pagina e poi eseguita la routine dell'evento click. Mi puoi confermare che è così o sono sulla strada sbagliata e se è così come si può ovviare a questo inconveniente?

Ciao e grazie per l'attenzione.

skraus Profilo | Junior Member

L'evento Load dell'oggetto Page viene eseguito sicuramente prima dell'evento relativo ad un bottone.

Quando intendi il testo predefinito intendi aver assegnato un valore alla proprietà Text del TextBox che hai inserito nella pagina. Ti allego una pagina aspx con una casella di testo ed un bottone. Io uso C#, ma in questo contesto non determina alcuna diff.
Sk

oil2percento Profilo | Newbie

Ciao ho visto l'esempio che mi hai inviato e tutto funziona bene. Ti allego e ti commento delle immagini che spero possano darti un'idea più chiara della situazione. Nella prima immagine puoi vedere la griglia, la text box che vedi accanto all'icona carrello è la txt in questione, nella seconda immagine vado nella modalità modifica del templatefield, nella terza immagine vedi la txtbox selezionata e a destra nell'elenco proprietà assegno come valore 1. Nella quarta immagine puoi vedere il funzionamento, inserisco il valore 5 nella txtbox clicco sul carrello, il valore della textbox viene memorizzato in una variabile session quindi si apre la pagina successiva (ultima immagine) dove si vede il riepilogo del carrello e come puoi notare la quantità acquistata è 1 e non 5. Visto che sei qui avrei un altro dubbio, e cioè io scrivo tutto in VB e non ho scritto una sola riga in ASP. Allora volevo sapere se questo può andare bene o se mi preclude qualcosa e devo iniziare a masticare qualcosa di asp.
Ciao e davvero grazie per l'attenzione.

skraus Profilo | Junior Member

Ma quando visualizzi l'ultima pagina (il riepilogo del carrello) il valore della quantità lo leggi dalla variabile di sessione ?

Inoltre in fase di debug hai verificato che nell'assegnamento alla variabile di sessione ci finisca correttamente il valore giusto ?

Per quanto riguarda il tuo ultimo dubbio sull'uso del ASP e del VB non ho ben capito cosa intendi.

Ciao
Sk

oil2percento Profilo | Newbie

Ciao, si il valore nella pagina del riepilogo carrello viene letto dalla variabile di sessione che è sempre 1, cioè il valore predefinito della textbox.
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 !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5