allora:

Ho costruito una finestra web che mi dovrebbe permettere ci aggiornare un record di un database.

diciamo che i campi del database sono questi:

|ID| nome_prodotto | descrizione | prezzo |

La finestra viene richiamata come pop-up assieme all'id del record da aggiornare.

E' mia intenzione rendere i campi della finestra già pre-compilati con i vecchi valori pescati dal database, in modo da permettere all'utente dell'applicazione di modificare i campi in maniera mirata, senza costringerlo a digitare di nuovo tutto.

Ho quindi una form così concepita:

<form method=post runat="server">
<input type="text" id="id_code" runat="server"/>
<input type="text" id="nome_prodotto" runat="server"/>
<input type="text" id="descrizione" runat="server"/>
<input type="text" id="prezzo" runat="server"/>
</form>

I campi vengono inizializzati mediante uno script lato server che esegue una select (select * from miatabella where id = miovalore)_

protected void Page_Load(Object sender, EventArgs e)
{
id_code.Value=[id letto dal database];
nome_prodotto.Value = [nome_prodotto letto dal database];
ecc. ecc.
}

Fino a qui tutto bene.
Il problema arriva quando l'utente, dopo aver modificato i campi come più gli aggrada, schiaccia il pulsante "submit".

Associata al submit c'è la mia funzioncina lato server
void SubmitBtn_Click(object Source, EventArgs e) {
....
}
la quale costruisce l'istruzione sql di update e la da in pasto al database.

ora, l'istruzione sql è costruita leggendo il contenuto dei valori dei campi di input, quindi, più o meno, come segue:

string sqlCommand = "update mia tabella set";
sqlCommand += "nome_prodotto='"+nome_prodotto.Value+"'";
sqlCommand += "descrizione='"+descrizione.Value+"'";
sqlCommand += "prezzo='"+prezzo.Value+"'";
sqlCommand += " where id="+mioId

lancio il mio comando sql e... non succede nulla, almeno apparentemente, perchè in realtà vengono sovrascritti i vecchi valori con gli stessi identici valori.

Cioè:

Se l'utente trova la finestra così pre-compilata:

nome_prodotto ---> pippo
descrizione ---> pluto
prezzo ---> 999999

modifica i campi come segue:

nome_prodotto ---> gambadilegno
descrizione ---> paperone
prezzo ---> 000000

e schiaccia submit, il comando sql che costruisco e che do in pasto al db non è, come mi aspetterei, questo:

Update miatabella set
nome_prodotto='gambadilegno'
descrizione='paperone'
prezzo='000000'
where id=miovalore

ma bensi questa:

Update miatabella set
nome_prodotto='pippo'
descrizione='pluto'
prezzo='999999'
where id=miovalore

ma perchè diavolo se l'utente, prima di schiacciare il submit, i valori dei campi di input li ha modificati?

Mille grazie a chiunque mi aiuterà.