17 messaggi dal 08 aprile 2005
Sto giocherellando da poco con asp.net 2.0 e non ho mai usato asp.net 1.x

ho letto da più fonti che per rendere editabili i record di un database usando una gridview è sufficiente scrivere un UpdateCommand ad hoc nella SqlDataSource e il miracolo è compiuto. Ora, dopo numerosi tentativi penso che forse mi sfugge qualcosa perchè a me proprio non funziona (nemmeno il delete ma credo che il problema sia molto simile)


ecco il mio codice... anzi il codice che ha scritto Visual Studio2005:


<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"

SelectCommand="SELECT idTrattamento, descrizione, prezzo FROM trattamenti"

UpdateCommand="UPDATE trattamenti SET descrizione = @descrizione, prezzo = @prezzo WHERE (idTrattamento = @idTrattamento)">

<UpdateParameters>
<asp:Parameter Name="descrizione" />
<asp:Parameter Name="prezzo" />
<asp:Parameter Name="idTrattamento" />
</UpdateParameters>
</asp:SqlDataSource>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="idTrattamento"
DataSourceID="SqlDataSource1">

<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="idTrattamento" HeaderText="idTrattamento" InsertVisible="False"
ReadOnly="True" SortExpression="idTrattamento" />

<asp:BoundField DataField="descrizione" HeaderText="descrizione" SortExpression="descrizione" />

<asp:BoundField DataField="prezzo" HeaderText="prezzo" SortExpression="prezzo" />
</Columns>

</asp:GridView>



Ricevo questo errore:

Must declare the scalar variable "@idTrattamento".


Nel Query Builder infatti non riesco a dire che voglio filtrare per idTrattamento.... cioè la clausola WHERE della query l'ho dovuta scrivere a mano! (Se tolgo il WHERE dalla query l'aggiornamento viene eseguito... solo che ovviamente vengono cambiati tutti i record del database)

CHE DITE?? perchè devo dichiarare il parametro @idTrattamento?? non basta che compaia negli <UpdateParamenters>?? E perchè su ottantamila tutorial che ho letto sembra che bastino 2 click e invece a me non funziona?? :)))
17 messaggi dal 08 aprile 2005
Ho risolto......

dovevo mettere le parentesi quadre... ma qualcuno mi dice perchè?


con questa query funziona:

UpdateCommand="UPDATE [trattamenti] SET [descrizione] = @descrizione, [prezzo] = @prezzo WHERE ([idTrattamento] = @idTrattamento)"


perchè sui libri e sui tutorial non le ho mai viste ste parentesi??!!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.