Pb de passage de paramètre dans un DATAGRID

Résolu
Templar_net Messages postés 30 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 28 septembre 2005 - 7 juin 2005 à 12:19
Templar_net Messages postés 30 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 28 septembre 2005 - 8 juin 2005 à 13:33
Bonjour à tous, je suis toujours sur mon problème de mise à jour, ajout, ... etc dans un datagrid.

J'ai trouvé d'ou venait le souci mais je ne vois pas comment le résoudre et surtout pourquoi je le rencontre alors que dans les exemples que j'ai vu, ca fonctionnait.

Donc pour résumé, j'ai 3 pages : une ASPX, une APSX.VB et celle de mon composant. Ce dernier m'a généré des requêtes toute prête.

Donc dans mon ASPX.VB, j'ai juste a associé à "Datagrid1_UpdateCommand" le code :
Me.MyComponent.SqlConnection1.Open( )
Me.MyComponent.SqlUpdateCommand1.ExecuteNonQuery( )
Me.MyComponent.SqlConnection1.Close( )

Sachant que la fonction générée est la suivante : Me.SqlUpdateCommand1.CommandText "UPDATE Compagnie SET libelle_compagnie @libelle_compagnie WHERE (id_compagnie =" @Original_id_compagnie)"

Me.SqlUpdateCommand1.Connection = Me.SqlConnection1

Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@id_compagnie", System.Data.SqlDbType.Int, 4, "id_compagnie"))

Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@libelle_compagnie", System.Data.SqlDbType.VarChar, 50, "libelle_compagnie"))

Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_id_compagnie", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "id_compagnie", System.Data.DataRowVersion.Original, Nothing))

Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_libelle_compagnie", System.Data.SqlDbType.VarChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "libelle_compagnie", System.Data.DataRowVersion.Original, Nothing))

Le problème c'est quand je clique sur le bouton, il me dit que le paramètre @libelle_compagnie n'est pas fourni.

Pour tester, j'ai ajouté la ligne :
mCmd.Parameters("@libelle_compagnie").Value = "Toto"

Et là ca marche, ... C'est donc bien que dans la fonction générée, il ne sait pas où est le pas où est le champ modifié dans mon Datagrid, ou que le paramètre ne lui ai pas correctement passé.

Quelqu'un aurait-il deja rencontré ce probleme et solutionné ?
Et donc comment lui passer correctement le paramètre ?

PS : j'ai essayé la solution sans passer par le composant, donc en utilisant juste les pages ASPX et ASPX.VB comme dans le Chap 6. du livre de Micro Application - Ref. 3390 (et dont j'ai téléchargé les sources sur leur site) et j'ai le même problème.

6 réponses

cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 1
8 juin 2005 à 09:58
Si tu veux modifier un champ, tu cliques sur ton bouton modifier et



et le champ qui est un label devient une textbox par exmple.



Pour se faire, ton champ a l'intérieur de ton datagrid, tu le défini comme ça:










<FooterTemplate>

</FooterTemplate>
<EditItemTemplate>


</EditItemTemplate>





'>








<EditItemTemplate>


'>





</EditItemTemplate>









Cab
3
cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 1
7 juin 2005 à 15:28
Le probleme vient certainement de ta page aspx.



est-ce que tu as mis a ton datagrid un:



OnUpdateCommand="Datagrid1_UpdateCommand"



et









Cab
0
Templar_net Messages postés 30 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 28 septembre 2005
7 juin 2005 à 16:10
Oui tout a fait, mis a par que c'est un linkbutton.
Et dans la version avec composant, il n'y a meme pas besoin de le préciser dans le code ASP, ca se fait tout seul, ...
0
cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 1
7 juin 2005 à 16:30
et le champ que tu modifies, ressemble a ça ???



<EditItemTemplate>

@libelle_compagnie
" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "@libelle_compagnie
") %>'>



</EditItemTemplate>



<EditItemTemplate>


</EditItemTemplate>Cab
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Templar_net Messages postés 30 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 28 septembre 2005
7 juin 2005 à 17:01
non j'ai rien qui ressemble a ca dans ma page ASP.

J'ai une EditCommandColumn (pour modifier, annuler, mettre à jour), une ButtonColumn pour le bouton supprimer et une BoundColumn pour mes données.

Les boutons modifier et annuler ont leur code qui marche.
J'ai aussi sur la page une textbox pour faire un Insert qui marche (apres plusieurs jours de galère quand même ... lol)

Si le souci vient de la ligne que tu m'as indiqué je vais regarder pkoi elle n'a pas été généré et sinon comment l'ajouter pour que ca puisse fonctionner.
0
Templar_net Messages postés 30 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 28 septembre 2005
8 juin 2005 à 13:33
Waouh, j'ai fait du ménage et en utilisant toutes tes indications plus tout ce que j'avais dans les bouquins, j'ai réussi à me débrouiller. Par contre avec tout ca, plus besoin du composant, ... C'est peut-être pas plus mal, car en fait c'est encore assez limité dans son utilisation je trouve.

Donc maintenant j'ai juste un page *.aspx et une *.aspx.vb. Mais autres pages étant du même style, seul mais requête qui vont maintenant travailler sur plusieurs tables devraient changer.

Merci pour ton aide.
0
Rejoignez-nous