Lettura e aggiornamento dati da DB

martedì 04 settembre 2007 - 10.29

fosygi Profilo | Newbie

Ciao a tutti, ho un problema curioso con una pagina aspx.
E' una pagina molto semplice, ma si verifica una cosa strana.

Andiamo con ordine...
La pagina è formata da un piccolo form contenente 4 textbox: nome, cognome, email, struttura.
Sull'evento load della pagina ho inserito il codice che legge da db (sqlserver) i 4 campi per mezzo di una storedprocedure:


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Ok, fin qua tutto ok: funziona!
A questo punto ho inserito un bottone che dovrebbe aggiornare i dati del form su db.
Ecco il codice associato all'evento onclick:


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Eseguo la pagina, il form si riempie con i dati letti da db, modifico uno o più campi, schiaccio il pulsante e... il form torna come prima (e il database non viene aggiornato)!
Secondo voi, perchè?


Altri dettagli:
- entrambe le storedprocedure sono corrette e funzionanti (entrambe testate da riga di comando)
- se commento l'evento "load", la procedura di aggiornamento funziona e il db si aggiorna
- se invece di usare la storedprocedure nel evento onclick del bottone uso una query, funziona. Ad esempio, così va:

querystring = "UPDATE utenti SET nome='" & txtnome.text & "', cognome=....... " connection.Open() Using command As New SqlCommand(querystring, connection) command.CommandType = Data.CommandType.Text command.ExecuteNonQuery() End Using connection.Close()

- Questo è il testo della storedprocedure di update:
ALTER PROCEDURE queryUtenteAggiornaDatiPersonali
@nomeutente varchar(20), @nome varchar(50), @cognome varchar(50), @email varchar(150), @struttura varchar(100)
AS
BEGIN
SET NOCOUNT ON;
UPDATE Utenti
SET nome = @nome, cognome = @cognome, email = @email, struttura = @struttura
WHERE nomeutente=@nomeutente;



Qualche suggerimento?
Ciao a tutti!
giulio

amelix Profilo | Expert

Devi usare la @ quando chiami i nome dei parametri .
"@nome" anzicè "nome" nel onClick:
command.Parameters.AddWithValue("@nome", Server.HtmlEncode(txtNome.Text))

Andrea - http://www.MelisWeb.eu/

[OT] Vendo il mio portatile:
http://www.subito.it/vi/1391126.htm

fosygi Profilo | Newbie

Ciao, grazie x il suggerimento, ma non è quello il problema.
Per scrupolo ho provato, ma come prima... i dati non vengono aggiornati nè su db nè su form.
Se però commento tutto il codice nell'evento onload, allora come per magia il bottone funziona... !!

amelix Profilo | Expert

Fai il controllo del IsPostBack?!?
Altrimenti ricarichi tutte le volte i dati presenti su db e, allo scatenarsi dell'evento onClick, risalvi gli stessi dati...
Andrea - http://www.MelisWeb.eu/

[OT] Vendo il mio portatile:
http://www.subito.it/vi/1391126.htm

fosygi Profilo | Newbie

Ok, è vero!
Non so perchè ma non mi era venuto proprio in mente!
Ora funziona benone.
Grazie1000, ciao alla prossima

amelix Profilo | Expert

Di nulla!

È una delle dimenticanze + frequenti...
Io nell'onload lo metto subito anche se poi non lo uso....
Andrea - http://www.MelisWeb.eu/

[OT] Vendo il mio portatile:
http://www.subito.it/vi/1391126.htm
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5