Bonjour les Fondus !!!
En fait j'ai perdu plusieurs heures cet apres midi sur ce probleme qui me dépasse :
1_j'ai une SQLDataSource avec un simple select, je demande a l'assistant de générer les commandes Update et Supprimer.
2_je Bind un Gridview dessus
3_génération des colonnes automatiques, génération des boutons Supprimer et Modifier.
Code ASP :
[CODE]<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:STSIMGConnectionString %>"
DeleteCommand="DELETE FROM [indexrows] WHERE [idrid] = @idrid" InsertCommand="INSERT INTO [rows] ([idxid], [idrnum], [idrdata4], [idrdata3], [idrdata2], [idrdata1]) VALUES (@idxid, @idrnum, @idrdata4, @idrdata3, @idrdata2, @idrdata1)"
SelectCommand="SELECT [idrid], [idxid], [idrnum], [idrdata4], [idrdata3], [idrdata2], [idrdata1] FROM [indexrows] WHERE ([idxid] = @idxid)"
UpdateCommand="UPDATE [indexrows] SET [idxid] = @idxid, [idrnum] = @idrnum, [idrdata4] = @idrdata4, [idrdata3] = @idrdata3, [idrdata2] = @idrdata2, [idrdata1] = @idrdata1 WHERE [idrid] = @idrid">
<DeleteParameters>
<asp:Parameter Name="idrid" Type="Int32" ConvertEmptyStringToNull="False" DefaultValue="0" Direction="InputOutput" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="idxid" Type="Int32" />
<asp:Parameter Name="idrnum" Type="Int32" />
<asp:Parameter Name="idrdata4" Type="String" />
<asp:Parameter Name="idrdata3" Type="String" />
<asp:Parameter Name="idrdata2" Type="String" />
<asp:Parameter Name="idrdata1" Type="String" />
<asp:Parameter Name="idrid" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="idxid" Type="Int32" />
<asp:Parameter Name="idrnum" Type="Int32" />
<asp:Parameter Name="idrdata4" Type="String" />
<asp:Parameter Name="idrdata3" Type="String" />
<asp:Parameter Name="idrdata2" Type="String" />
<asp:Parameter Name="idrdata1" Type="String" />
</InsertParameters>
<SelectParameters>
<asp:Parameter DefaultValue="259072" Name="idxid" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>[/CODE]
Chacun l'aurra compris : le champ idrid est ma clé unique.
Alors voila : le UPDATE Fonctionne nikel, le SELECT aussi (meme si je joues un selectparameter pour remplacer le where fixe dans l'exemple).
MAIS : si j'ai le malheure de cliquer sur suppression :
[CODE]Erreur du serveur dans l'application '/WebSite2'.
--------------------------------------------------------------------------------
La variable scalaire "@idrid" doit être déclarée.
Trace de la pile:
[SqlException (0x80131904): La variable scalaire "@idrid" doit être déclarée.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +862234
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +739110
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +188
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1956
System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) +192
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +380
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +135
System.Web.UI.WebControls.SqlDataSourceView.ExecuteDbCommand(DbCommand command, DataSourceOperation operation) +401
System.Web.UI.WebControls.SqlDataSourceView.ExecuteDelete(IDictionary keys, IDictionary oldValues) +720
System.Web.UI.DataSourceView.Delete(IDictionary keys, IDictionary oldValues, DataSourceViewOperationCallback callback) +75
System.Web.UI.WebControls.GridView.HandleDelete(GridViewRow row, Int32 rowIndex) +927
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +1155
System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) +199
System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +174
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102[/CODE]
je met la pile si ca aide quelqu'un moi, je sais pas quoi chercher dedans :(
Alors voila : je comprends plus rien, je peux pas toucher a la base de donnée (je developpe un addon sur un appli editeur donc pas touche !!!)
Sioux plé ^^