Pb de passage de paramètre dans un DATAGRID [Résolu]

Signaler
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005
-
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005
-
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

Messages postés
100
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2006
1
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
Messages postés
100
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2006
1
Le probleme vient certainement de ta page aspx.



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



OnUpdateCommand="Datagrid1_UpdateCommand"



et









Cab
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005

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, ...
Messages postés
100
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2006
1
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
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005

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.
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005

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.